SqlServer游标的学习

SqlServer游标的学习,第1张

概述-------------------------------------------------------------------------------------------------------------------------游标的实例------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------------------------------游标的实例------------------------------------------------------------------------------------------------------------------------------游标的概念--游标(Cursor)它使用户可逐行访问由sql Server返回的结果集。使用游标(cursor)的一个主要的原因就是把集合 *** 作转换成单个记录处理方式。用sql语言从数据库中检索数据后,结果放在内存的一块区域中,且结果往往是一个含有多个记录的集合。游标机制允许用户在sql server内逐行地访问这些记录,按照用户自己的意愿来显示和处理这些记录。--游标的优点--从游标定义可以得到游标的如下优点,这些优点使游标在实际应用中发挥了重要作用:--1)允许程序对由查询语句select返回的行集合中的每一行执行相同或不同的 *** 作,而不是对整个行集合执行同一个 *** 作。--2)提供对基于游标位置的表中的行进行删除和更新的能力。--3)游标实际上作为面向集合的数据库管理系统(RDBMS)和面向行的程序设计之间的桥梁,使这两种处理方式通过游标沟通起来。--FORWARD_ONLY意味着游标只能从数据集开始向数据集结束的方向读取,FETCH NEXT是唯一的选项--SCRolL支持游标在定义的数据集中向任何方向,或任何位置移动--游标的 *** 作步骤:--1.声明游标--2.打开游标--3.读取数据--4.关闭游标--5.释放游标declare @name varchar(50)declare st_cursor scroll cursor for select empname from Tab_Salary   --声明游标open st_cursor	    --打开游标					--读取数据--取第一行fetch first from st_cursor into @name print @name--取最后一行fetch last from st_cursor into @nameprint @name--取下一行fetch next from st_cursor into @nameprint @name--取上一行fetch prior from st_cursor into @nameprint @name--取第二行【absolute(n):跳到第n行】fetch absolute 2 from st_cursor into @nameprint @name--取上一行【relative(n):相对当前位置取第n行,-1当前位置的上一行,1当前位置下一行,如果超出n行,则为当前行数据】fetch relative -1 from st_cursor into @nameprint @nameclose st_cursor		--关闭游标deallocate st_cursor --释放游标------------------------------------实战练习-------------------------------------------我们先建两张表--工资表create table Tab_Salary(	ID int IDentity(1,1),empID varchar(20) primary key,empname varchar(50),Salary decimal(18,2))insert into Tab_Salary values('A001','陈飞刚',1000.50),('B001','杨帆',900.50),('C001','吴磊',750.80)							go--额外工资表create table Tab_Extra_Salary(	ID int IDentity(1,empID varchar(20),Extr_Salary decimal(18,2))insert into Tab_Extra_Salary values('A001',200.00),100.50),600.80),800.00)							go--现在我们做一个简单的练习:用游标打印出额外工资表Extra_Salary的数据create proc pro_cursorasdeclare @empID varchar(20)declare @Extr_Salary decimal(18,2)declare mycursor cursor for select empID,Extr_Salary from Tab_Extra_Salary --声明游标open mycursor  --打开游标fetch next from mycursor into @empID,@Extr_Salarywhile(@@FETCH_STATUS=0)  --遍历所有的数据begin	print '游标成功取出一条数据!'	print @empID	print @Extr_Salary		fetch next from mycursor into @empID,@Extr_Salary  --取下一条游标数据endclose mycursor --关闭游标deallocate mycursor --删除游标goexec pro_cursorgo--加强练习:将工资表中员工的工资与该员工额外工资表中的额外工资对应的计算总和,然后在工资表中Salary显示出来--说简单点:Salary=Salary+Extr_Salarycreate proc pro_Salaryasdeclare @empID varchar(20)declare @Extr_Salary decimal(18,2)declare extrSalary_cursor cursor for select empID,Extr_Salary from Tab_Extra_Salary open extrSalary_cursorfetch next from extrSalary_cursor into @empID,@Extr_Salarywhile(@@FETCH_STATUS=0)begin	update Tab_Salary set Salary=Salary+@Extr_Salary where empID=@empID	fetch next from extrSalary_cursor into @empID,@Extr_Salary endclose extrSalary_cursordeallocate extrSalary_cursorgoexec pro_Salarygo--来看看刚刚游标执行的效果有没有加上去select * from Tab_Salarygo



相关资料:http://www.cnblogs.com/moss_tan_jun/archive/2011/11/26/2263988.html

总结

以上是内存溢出为你收集整理的SqlServer游标的学习全部内容,希望文章能够帮你解决SqlServer游标的学习所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/sjk/1170684.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-02
下一篇 2022-06-02

发表评论

登录后才能评论

评论列表(0条)

保存