–1、游标操作
–在选修数据库中,以Student(sno,sname,ssex,sage,sdept),Course(cno,cname,cpno,credit),SC(sno,cno,grade)表为基础完成下列游标操作。

–(1)在Student表中定义一个包含sno,sname,ssex,sage,sdept的滚动游标,游标的名称为“cs-cursor”,并将游标中的数据逐条显示出来,并读取第一行数据、最后一行数据,当前行前面的一行数据,当前游标开始的第二行数据,关闭游标,释放游标。

declare cs_cursor cursor
	scroll  for select * from student open cs_cursor
	 
fetch next from cs_cursor

fetch prior from cs_cursor--向前一行
fetch first from cs_cursor--游标移到第一行
fetch last from cs_cursor--游标移到最后一行

–(2)在Student表中定义一个所在系部为CS,包含sno,sname,ssex的游标,游标的名称为“cs-cursor”,并将游标中的绝对位置为2的学生的姓名改为“王楠”,性别改为“女”。

declare cs_cursor2 cursor
	scroll  for select sno,sname,ssex from student where sdept='CS'; 
	open cs_cursor2;
	
fetch ABSOLUTE 2 from cs_cursor2 ;
update student set sname='王楠', ssex='女' where current of cs_cursor2;	

–(3)在Student表中定义一个包含sno,sname,grade的游标,游标的名称为“cs-cursor”,并将游标遍历整个数据表。

declare cs_cursor3 cursor
	scroll  for select s.sno,sname,grade from student s,sc where s.sno=sc.sno ; 
	open cs_cursor3;
	
	declare @no char
	declare @name char
	declare @grade int
	fetch NEXT  from cs_cursor3 INTO @no,@name,@grade  while @@FETCH_STATUS=0 
	BEGIN 
		PRINT @no+' '+@name+' '+str(@grade)
		fetch NEXT  from cs_cursor3 INTO @no,@name,@grade
	END;

close cs_cursor3;
DEALLOCATE cs_cursor3;

–2、存储器操作
–在选修数据库中,以Student(sno,sname,ssex,sage,sdept),Course(cno,cname,cpno,credit),SC(sno,cno,grade)表为基础创建下列存储过程。
–(1)创建一个向Student表插入数据的存储过程,该过程需要用5个参数,分别传递

sno,sname,ssex,sage,sdept。
CREATE PROCEDURE sp_insert(@sno char,@sname char,@ssex char,@sage int,@sdept char)
	AS
	insert into student values(@sno,@sname,@ssex,@sage,@sdept);
--CLOSE sp_insert
--DEALLOCATE sp_insert
--exec sp_insert '201825139','莉莉','女',20,'CS';

–(2)创建一个向Course表插入数据的存储过程,该过程需要用4个参数,分别传递cno,cname,cpno,ccredit。

CREATE PROCEDURE cp_insert(@cno char,@cname char,@cpno int,@ccredit char)
	AS
	insert into course values(@cno,@cname,@cpno,@ccredit);

–(3)创建一个向SC表插入数据的存储过程,该过程需要用3个参数,分别传递sno,cno,grade。

CREATE PROCEDURE scp_insert(@sno char,@cno char,@grade int)
	AS
	insert into sc values(@sno ,@cno ,@grade );
Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐