SQL游标

SQL游标游标(MSSQL)例子:银行取钱1000块钱方案:1ATM点击取款100010张2ATM点击取款100取10次遍历思想优点:允许你一个个的遍历缺点:效率非常的低注意:一般情况下,不要

大家好,又见面了,我是你们的朋友全栈君。

游标(MSSQL)

例子:银行取钱1000块钱

方案:1ATM点击取款1000 10张

2ATM点击取款100 取10次

遍历思想

优点:允许你一个个的遍历

缺点:效率非常的低

注意:一般情况下,不要使用游标。

 

语法:

declare cursor1(游标名) cursor for select XXX--声明游标 1
open XXXX--打开 2
fetch next from XXX into XXX--将游标值赋给XXX   3
while(@@fetch_status=0)--循环查找
fetch next from XXX into XXX--同上
close cursor1--关闭游标   4
deallocate cursor1--解散游标   5

fetch_status
0 FETCH 语句成功
-1 FETCH 语句失败或此行不在结果集中
-2 被提取的行不存在

eg:
alter PROCEDURE cursor_a_b_insert
@aId int,
@aName nchar(10)
AS

declare @id int
declare @name varchar(50)
declare cursor1 cursor
for --定义游标cursor1 select bid,bname from b where aid=@aId --使用游标的对象(跟据需要填入select文) open cursor1 --打开游标 fetch next from cursor1 into @id,@name --将游标向下移1行,获取的数据放入之前定义的变量@id,@name中 while @@fetch_status=0 --判断是否成功获取数据 begin update b set bname=@aName+'1' where bid=@id --进行相应处理(跟据需要填入SQL文) update a set aname=@aName where aid=@aId fetch next from cursor1 into @id,@name --将游标向下移1行 end close cursor1 --关闭游标 deallocate cursor1 exec cursor_a_b_insert 55,'王媛媛'





alter proc cursor_pr_UpUser
@NoteUserId int
as
begin transaction
declare @NLId int
declare @NPLId int
–创建用户所对应的日志游标cursorNLId,将日志id放入@NLId游标中
declare cursorNLId cursor for select NoteLogId from NoteLogs where NUId=@NoteUserId
open cursorNLId
fetch next from cursorNLId into @NLId

while @@fetch_status=0 –判断是否成功获取数据
begin
–创建日志所对应的评论游标cursorNPLId,将评论id放入@NPLId游标中
declare cursorNPLId cursor for select NotePingLunId from NotePingLun where NLId=@NLId
open cursorNPLId
fetch next from cursorNPLId into @NPLId
while @@fetch_status=0
begin
–根据评论游标@NPLId修改评论状态
update dbo.NoteReply set NoteDel=0 where NoteReplyId=@NPLId
fetch next from cursorNPLId into @NPLId
end
–当评论游标遍历完关闭
close cursorNPLId –关闭游标
deallocate cursorNPLId
–根据日志游标@NPLId修改日志状态
update dbo.NotePingLun set NoteDel=0 where NLId=@NLId
fetch next from cursorNLId into @NLId

end
–关闭日志游标
close cursorNLId –关闭游标
deallocate cursorNLId
–根据用户修改用户和日志状态
update dbo.NoteUser set NoteDel=0 where NoteuserId=@NoteUserId
update dbo.NoteLogs set NoteDel=’qq’ where NUId=@NoteUserId
if @@error<>0 –如果有错误
begin
print ‘删除失败,回滚事务’
rollback transaction –回滚
end
else
begin
print ‘删除成功,提交事务’
commit transaction
end
go


exec cursor_pr_UpUser 1

 

 

 

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/154344.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • matlab中find函数用法[通俗易懂]

    matlab中find函数用法[通俗易懂]1.返回素有非零元素的位置例如:注:竖着数!!2.条件:find(A==1)例如:返回的仍然是位置!3.返回前N个非零元素的位置,find(A,X)例如:4.返回最后一个非零值的位置find(A,1,‘last’)例如:5.返回最后一个非零值的行列位置或者A中非零元素位置例如:6.[a,b,v]=find(A),找出A中非零元素所在的行和列,分别存储在a和b中,…

    2022年7月17日
    14
  • java自定义注解实现「建议收藏」

    引言去杭州第一面试的时候问及到自定义注解,那时候不清楚,现在简单写下,算是对过去的一个交代。自定义注解关于注解的定义这里就不解释了,下面直接来看java提供的四个元注解(作用:负责注释其它注解)。1、@Target(用于描述修饰对象的范围)范围取值于ElementType这个枚举类:ANNOTATION_TYPE(注释…

    2022年4月13日
    46
  • linux webstorm激活码2022【中文破解版】

    (linux webstorm激活码2022)本文适用于JetBrains家族所有ide,包括IntelliJidea,phpstorm,webstorm,pycharm,datagrip等。https://javaforall.net/100143.htmlIntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,上面是详细链接哦~4…

    2022年4月2日
    117
  • SQL中IS NOT NULL与!=NULL的区别

    SQL中IS NOT NULL与!=NULL的区别平时经常会遇到这两种写法:ISNOTNULL与!=NULL。也经常会遇到数据库有符合条件!=NULL的数据,但是返回为空集合。实际上,是由于对二者使用区别理解不透彻。默认情况下,推荐使用ISNOTNULL去做条件判断,因为SQL默认情况下对WHEREXX!=Null的判断会永远返回0行,却不会提示语法错误。这是为什么呢?SQLServer文档中对Null值的

    2022年6月9日
    65
  • Myabtis-plus中IService接口的使用

    Mybatis-plus的IService接口:IService接口解释,我们可以看到IService接口就是有一大堆方法接口。IService的使用:IService的使用需要另外两个接口的配合:baseMapper和ServiceImpl第一步:实现basemapper接口publicinterfaceAdminMapperextendsBaseMapper<Admin>{}第二步:编写service类publicinterfaceAdminServiceex

    2022年4月8日
    300
  • Sub-process /usr/bin/dpkg returned an error code_sub-process /usr/bin/dpkg

    Sub-process /usr/bin/dpkg returned an error code_sub-process /usr/bin/dpkgE:Sub-process/usr/bin/dpkgreturnedanerrorcode(1)解决办法安装libapache2-svn出现了这个错误,是由于apt-get安装软件时出现了类似于:dpkg:errorprocessingpackagelibapache2-mod-svn(–configure):subprocessinstalledpost-i…

    2022年10月7日
    1

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号