300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > MS SQL Server 游标及实例(四)

MS SQL Server 游标及实例(四)

时间:2022-06-08 20:41:30

相关推荐

MS SQL Server 游标及实例(四)

1.3.5删除游标

DEALLOCATE mycursor

1.3.6实例训练

如上我介绍完了游标使用的5个步骤,那现在我们就来上上手,练习用游标取出表2 AddSalary的数据。

为了运行我们自己创建的游标,我们将游标写在存储过程里,方便我们看到游标的整个使用过程。

在sqlserver2000中新建一个存储过程:

-->CREATE PROCEDURE PK_Test

AS //声明2个变量

declare @O_ID nvarchar(20)

declare @A_Salary float //声明一个游标mycursor,select语句中参数的个数必须要和从游标取出的变量名相同

declare mycursor cursor for select O_ID,A_Salary from AddSalary //打开游标 open mycursor //从游标里取出数据赋值到我们刚才声明的2个变量中

fetch next from mycursor into @O_ID,@A_Salary //判断游标的状态 //0 fetch语句成功 //-1 fetch语句失败或此行不在结果集中 //-2被提取的行不存在

while (@@fetch_status=0)

begin //显示出我们每次用游标取出的值 print '游标成功取出一条数据'

print @O_ID print @A_Salary //用游标去取下一条记录 fetch next from mycursor into @O_ID,@A_Salary end //关闭游标

close mycursor //撤销游标

deallocate mycursor

GO

通过上面的注释,我想大家都明白了整个游标的创建过程了吧。但是我们现在还是一个抽象的了解,我们学任何知识,都要用于实践,这样才能使抽象的东西变的具体。

那我们就运行这个存储过程,看看游标到底是怎么取值的:

我们打开SQLSERVER2000的查询分析器,制定好数据库后,我们执行存储过程

Exec PK_Test

让我看看效果吧(如图)

通过实例我们可以看到游标逐行逐行都把值都取出来了。那么我请大家先不看下面的答案,在引言部分我刚才留个大家的问题试一下能不能解决?

现在我们写一个存储过程解决刚才我留下来的问题吧

-->CREATE PROCEDURE PK_SalaryAdd

AS

declare @O_ID nvarchar(20),@A_Salary float

declare mycursor cursor for select O_ID,A_Salary from AddSalary

open mycursor

fetch next from mycursor into @O_ID,@A_Salary

while(@@fetch_status = 0)

begin

Update OriginSalary set O_Salary=O_Salary+@A_Salary where O_ID=@O_ID

fetch next from mycursor into @O_ID,@A_Salary

end

close mycursor

deallocate mycursor

GO

按照老方法,我们用查询分析器来执行我们的存储过程,看看结果是怎么样的?

Exec PK_SalaryAdd

让我看看效果吧(如图)

执行存储过程,看到我们影响了3行数据

用sql语句,看看表OriginSalary现在的结果:

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。