【MSSql2000】游标
来源:互联网 发布:python frozenset 编辑:程序博客网 时间:2024/05/19 05:06
if object_id('tempdb..#StuScore') is null create table #StuScore ([StuScoreID] [int]IDENTITY (1, 1) NOT NULL ,[StuName] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,[Details] [varchar] (100) COLLATE Chinese_PRC_CI_AS NULL )else DELETE FROM #StuScoredeclare @stuID varchar(100)--嵌套游标查询条件,主键表的主键declare @stuName varchar(100)--沿用原表(姓名),主键表字段姓名declare @scoreName varchar(100)--需要组合的外键表的字段declare @score varchar(100)--需要组合的外键表的字段declare @scoreInfo varchar(100)--组合成的字段declare stuCursor scroll cursor for select UserInfoID,UserName from UserInfo--游标1查询主键表open stuCursor--打开游标fetch from stuCursor into @stuID,@stuName--取出游标第一条记录set @scoreInfo=''--用于循环赋值while @@fetch_status=0--取值成功,循环开始begindeclare scoreCursor scroll cursor for select ScoreName,Score from ScoreInfo where UserInfoID=@stuID--游标2条件查询外键表open scoreCursor--打开游标fetch from scoreCursor into @scoreName,@score--取出游标第一条记录while @@fetch_status=0--取值成功,循环开始beginset @scoreInfo=@scoreInfo+@scoreName+':'+@score+' '--将取出的值循环赋给@scoreInfofetch from scoreCursor into @scoreName,@score--取游标第二条记录--print @scoreInfoend--循环结束insert into #StuScore(StuName,Details) values(@stuName,@scoreInfo)--第一条记录组合完毕,插入表#StuScore当中close scoreCursor--关闭游标2deallocate scoreCursor--删除游标引用2set @scoreInfo=''--清空@scoreInfo以去除残留的上一次组合的记录fetch from stuCursor into @stuID,@stuName--取出游标第二条记录end--循环结束close stuCursor--关闭游标1deallocate stuCursor--删除游标引用1goselect * from #StuScoreselect * from UserInfoselect * from ScoreInfoexecute StudentScore(所影响的行数为 1 行)(所影响的行数为 1 行)StuScoreID StuName Details ----------- -------------------------------------------------- ---------------------------------------------------------------------------------------------------- 1 李四 语文:90 数学:90 物理:90 2 张三 语文:80 英语:80 历史:80 数学:80 (所影响的行数为 2 行)UserInfoID UserName ----------- -------------------------------------------------- 1 李四2 张三(所影响的行数为 2 行)ScoreID ScoreName Score UserInfoID ----------- -------------------------------------------------- ----------- ----------- 1 语文 90 12 数学 90 13 语文 80 24 英语 80 25 历史 80 26 数学 80 27 物理 90 1(所影响的行数为 7 行)