sql游标用法_sqlserver游标使用和循环

sql游标用法_sqlserver游标使用和循环SQL Server 2008 游标使用实例本文使用以下两张数据库表作为演示对象。 1 游标初探使用游标进行遍历declare @classAndStudent table( class_id int, 班级ID class_name

SQL Server 2008 游标使用实例   本文使用以下两张数据库表作为演示对象。   
sql游标用法_sqlserver游标使用和循环   
sql游标用法_sqlserver游标使用和循环   
sql游标用法_sqlserver游标使用和循环   
sql游标用法_sqlserver游标使用和循环       1 游标初探–使用游标进行遍历   declare @classAndStudent table( class_id int, –班级ID class_name nchar(10), –班级名称 teacher nchar(10), –教师 id int, –学生ID name nchar(10), –学生名称 age int –学生年龄 ); declare @ClassId int; –班级ID declare @ClassName nchar(10); –班级名称 declare @Teacher nchar(10); –教师 declare @Id int; –学生ID declare @Name nchar(10); –学生名称 declare @Age int; –学生年龄 insert into @classAndStudent select t1.classid,t1.classname,t1.teacher,t2.id,t2.name,t2.age from tb_Class t1,tb_Student t2 where t1.classid =t2.classid declare @cursor cursor;–游标 set @cursor=cursor for select class_id,class_name,teacher,id,name,age from @classAndStudent; open @cursor fetch next from @cursor into @ClassId,@ClassName,@Teacher,@Id,@Name,@Age; while @@FETCH_STATUS=0 begin if(@Age<20 and @Teacher=’wsp’) begin update tb_Student set classid=1 where id=@ID end fetch next from @cursor into @ClassId,@ClassName,@Teacher,@Id,@Name,@Age; end close @cursor deallocate @cursor   先简单解释一下上面代码到底做了些什么事。   代码一开始定义表类型变量@classAndStudent,用来保存学生与班级的信息,随后使用游标来遍历表变量(http://support.microsoft.com/?kbid=)@classAndStuden,在遍历过程中,将学生年龄小于20,且教师名称为“wsp”的学生的班级置为1。   接下来,对游标的使用做简单的说明。   1)声明游标:确定游标的属性,制定游标的查询结果集。   declare @cursor cursor;–游标 set @cursor=cursor for select class_id,class_name,teacher,id,name,age from @classAndStudent;   2)打开游标:编译sql server定义游标的select语句,并行成结果集。   open @cursor   3)数据:通过游标以行的单位从结果集中数据。   fetch next from @cursor into @ClassId,@ClassName,@Teacher,@Id,@Name,@Age;   4)关闭游标:停止处理查询。   close @cursor   5)释放游标:释放分配给游标的所有存储资源。   deallocate @cursor   查看执行结果:   select * from @classAndStudent select * from tb_Student   结果为:   
sql游标用法_sqlserver游标使用和循环       2 游标进阶–游标嵌套   简单修改上面的代码,即可以完成游标嵌套操作。   增加以下变量的声明。   declare @subcursor cursor;–子游标 declare @subClassID int;   修改if(@Age<20 and @Teacher=’wsp’)条件下的代码。   if(@Age<20 and @Teacher=’wsp’) begin set @subcursor=cursor for select t.class_id from tb_class t where t.class_id=@ClassId open @subcursor fetch next from @subcursor into @subClassID while @@FETCH_STATUS=0 begin –做你想做的 –是男人,想做就做呗 fetch next from @subcursor into @subClassID end close @subcursor deallocate @subcursor End   这里其实就是新增了一个游标@subcursor来遍历表tb_class的class_id而已。没什么好难解释的了,再说例子中也没有给出具体的实际操作,仅给出了游标嵌套的代码架子而已,在实际代码中大家可以灵活变更。

2024最新激活全家桶教程,稳定运行到2099年,请移步至置顶文章:https://sigusoft.com/99576.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。 文章由激活谷谷主-小谷整理,转载请注明出处:https://sigusoft.com/74102.html

(0)
上一篇 2024年 8月 5日 下午3:20
下一篇 2024年 8月 5日 下午3:23

相关推荐

关注微信