| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1309 人关注过本帖
标题:游标练习题
只看楼主 加入收藏
baijian710
Rank: 1
等 级:新手上路
帖 子:52
专家分:0
注 册:2007-11-11
收藏
 问题点数:0 回复次数:2 
游标练习题
结构:
sno char(10)
cno char(5)
grade int
ord int
数据
95001  db  89
95001  en  88
95002  db  98
95002  en  93
95003  db  98
95003  en  80
95004  db  100
95004  en  85
要求:有学生选课表SC(S#, C#, grade, ord) ,各字段含义分别为学号、课号、成绩、名次,类型分别是char(4)、char(4)、smallint、smallint。现在,前三个字段都有数据(没有为null的)。请创建存储过程give_ord,该存储过程有参数@C#,该存储过程的功能是将SC表中课程号为@C#的记录的ord字段填入学生在该课程的名次。成绩相同的学生的名次也相同。例如,A、B、C、D四人成绩分别是95、93、93、80,则四人的名次分别是1、2、2、4。
创建后,执行该存储过程,为选了课号为DB的课的学生排名次,看看排的结果对不对。
搜索更多相关主题的帖子: 游标 练习题 
2007-12-10 17:10
baijian710
Rank: 1
等 级:新手上路
帖 子:52
专家分:0
注 册:2007-11-11
收藏
得分:0 
自己做的,可供参考:
create proc order1 @cno  char(5)
as
declare order2 cursor
for select *
from sc
where cno=@cno
order by grade desc
for update of ord
open order2
declare @n int
set @n=1
declare @n1 int
declare @grade1 int
set @grade1=101
declare @sno char(10),@cno1 char(5),@grade int,@ord int
fetch next from order2
into @sno,@cno1,@grade,@ord

while @@fetch_status=0
begin

if @grade<@grade1
begin
update sc
set ord= @n
where current of order2
set @n1=@n
print @n1
set @n=@n+1
end

if @grade=@grade1
begin
print @n1
update sc
set ord=@n1
where current of order2
set @n1=@n1
set @n=@n+1
end

set @grade1=@grade

fetch next from order2
into @sno,@cno1,@grade,@ord
end

close order2  
--dealocate order2
drop proc order1
declare @s char(5)
set @s='db'

execute order1 db
select * from sc
2007-12-10 17:12
baijian710
Rank: 1
等 级:新手上路
帖 子:52
专家分:0
注 册:2007-11-11
收藏
得分:0 
查询各门课程的名次
declare od cursor
for select distinct cno
from sc
open od
declare @cno2 char(5)
fetch next from od
into @cno2
while @@fetch_status=0
begin
exec   order1  @cno2
fetch next from od
into @cno2
end
close od
deallocate od

select * from sc
2007-12-17 16:20
快速回复:游标练习题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.018783 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved