数据库 实验六 游标、存储过程的创建和使用

–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 );
  • 15
    点赞
  • 45
    收藏
    觉得还不错? 一键收藏
  • 15
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 15
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值