SQL中游标的使用

declare @studentnum varCHAR(9),@course varchar(10),@achievement tinyint,@classorder tinyint
declare @pstudentnum varchar(9),@allcourse varchar(60)


declare allachievement cursor for
select studentnum,course,achievement,classorder 
from tempachievement
where indate=convert(char(10),getdate(),120) and achievement>0
order by studentnum,course

OPEN allachievement

FETCH NEXT FROM allachievement
INTO @studentnum, @course, @achievement, @classorder
set @pstudentnum=@studentnum
set @allcourse=''
WHILE @@FETCH_STATUS = 0
BEGIN
 if (@pstudentnum <> @studentnum)
 begin
  if (len(@allcourse)>0)
  begin
   insert achievementaddfields(studentnum,addfields)
   values(@pstudentnum,@allcourse)
   --set addfields=@allcourse
   --where  studentnum=@pstudentnum
  end
  set @pstudentnum=@studentnum
   --set @allcourse=@course+@achievement+@classorder
  --set @allcourse=''
  set @allcourse=rtrim(@course) + ',' + ltrim(str(@achievement)) + ',' + ltrim(str(@classorder)) + ';'
  FETCH NEXT FROM allachievement
  INTO @studentnum, @course, @achievement, @classorder
 end
 else
  begin
  set @allcourse=@allcourse  + rtrim(@course) + ',' + ltrim(str(@achievement)) + ',' + ltrim(str(@classorder)) + ';'
  
  FETCH NEXT FROM allachievement
  INTO @studentnum, @course, @achievement, @classorder
  end
 
end
  if (len(@allcourse)>0)
  begin
   insert achievementaddfields(studentnum,addfields)
   values(@pstudentnum,@allcourse)
   --set addfields=@allcourse
   --where  studentnum=@pstudentnum
  end
CLOSE allachievement
DEALLOCATE allachievement

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值