存储过程——游标循环

原创 2018年04月16日 16:29:52

sqlserver中的循环遍历(游标循环

https://www.cnblogs.com/xielong/p/5941595.html,博主小小邪。
---------------------------------------------上面是博主学习的博客↑
---------------------------------------------下面是个人实践经验,感觉比较适合小白同学注意的地方↓


我在学习游标的时候,在对游标运行逻辑一知半解的情况下写了个游标的存储过程,而且是三个游标的嵌套(因为我也兼职代码程序开发,所以一眼看下来感觉跟for循环差不多,就可以着手了)。结果一口气写完,完了,出错了,出什么错了,下面↓

 fetch next from order_cursor into @temp 

我当初就是以为他在取值的同时continue,当时还为这个东西惑惑不解了大半天,东问西问。
后面研究发现这句话的作用仅仅是负责取游标容器中的下一个值,是用来取值的,取值的,他并不负责回到游标最上层,
哇,现在想起来也太丢人了。

其实我感觉游标循环是可以分为两部分去理解的,第一部分就是游标,第二部分就是循环↓

详解:
DECLARE cursor CURSOR FOR SELECT * FROM TABLE --定义游标容器,并且赋予其数据
        OPEN cursor  -- 打开容器
        DECLARE @A  --定义变量@A,用来接纳游标容器中的某一行的某一个字段值,存储过程常用函数。

        FETCH NEXT FROM cursor INTO @A --将游标容器中,第一行数据的值赋值给@A
        WHILE @@FETCH_STATUS=0 --判断是否取值成功,如果成功则 @@FETCH_STATUS为0,如不成功则为-1.
        BEGIN --开始WHILE 循环
        。。(处理逻辑)        

        FETCH NEXT FROM cursor INTO @A  --在结束循环前取游标容器的下一行值
        END --结束循环
        CLOSE cursor  --关闭游标容器,有打开则有关闭,有始有终
        DEALLOCATE cursor --释放游标资源,做完我们要的东西后清理垃圾,学过c语言的同学应该知道,需要释放资源,这里同理。
↑这里就完成了游标循环

小提示: 

     在sqlserver存储过程中,我们常常会用到临时表 #t 用来方便数据查询,而用完后,对于临时表的删除是非常必要的,不然在上千行的存储过程写完后,再去回过头删除时非常痛苦的一件事情,所以各位同学警记,下面是删表的逻辑判断:

IF object_id('tempdb..#a') is not null 
begin 
drop table #a
end   

而drop table 是非常危险的一个动作,如果你写成了实体表还运行了,那就跑路吧,至于怎么跑路,我建议你看一本书《入职三天,从删库到跑路》

    so good,各位一起Upup!

平时多记记,到用时才能看看,记录你的进步,分享你的成果

一个存储过程 游标循环结果集

在查询表名使用变量时只能使用concat 拼接 哭哭哭。。。。drop procedure if exists proc_tmp; create procedure proc_tmp() BE...
  • leilonghao
  • leilonghao
  • 2017-04-17 16:13:35
  • 543

【MySQL】存储过程、游标、循环简单实例

简单粗暴的 mysql 存储过程游标使用教学,包教包会一秒五行(噢呵呵呵好像暴露了些什么)...
  • u011704894
  • u011704894
  • 2016-04-22 20:48:25
  • 20205

Oracle使用游标循环调用存储过程

-- 声明游标;CURSOR cursor_name IS select_statement --For 循环游标 --(1)定义游标 --(2)定义游标变量 --(3)使用for循环来使用这...
  • ptzrbin
  • ptzrbin
  • 2013-04-26 14:30:54
  • 4581

在存储过程利用游标循环执行update语句

初到公司的第一个工作任务:(用Oracle的job定时对一个值进行累加计算); 虽然比较简单,但是由于已经两年多没有用过存储过程和游标这些了,所以重新温习了下; 记下笔记 ========创建...
  • XiangZhengxian
  • XiangZhengxian
  • 2017-03-09 20:28:54
  • 1781

MYSQL存储过程&循环&游标&IF$CASE

测试用表SET FOREIGN_KEY_CHECKS=0;-- ---------------------------- -- Table structure for stu -- ---------...
  • qq_26824159
  • qq_26824159
  • 2017-04-21 11:07:31
  • 596

mysql存储过程+游标循环遍历 判断 赋值 等实例一

1.先说下本文的背景以及结合什么样的需求作出具体的功能: 最近本人公司半道子不知道老板从哪旮沓里(老板应该不看这类技术型博客,O(∩_∩)O)接手了一个半吊子项目来(接盘侠),先不谈这个项目是咋滴咋滴...
  • Ice166
  • Ice166
  • 2017-12-18 11:00:16
  • 169

oracle数据库存储过程范例(使用游标进行循环)

使用游标进行循环。 create or replace PROCEDURE Counting AS a_count number; cursor authorListCursor is select ...
  • enthusiastic513
  • enthusiastic513
  • 2015-07-08 16:30:44
  • 678

DB2 存储过程中游标循环的嵌套使用方法。

DB2 存储过程中游标循环的嵌套使用方法。
  • wangjichen_1
  • wangjichen_1
  • 2017-03-09 14:17:06
  • 1890

mysql 存储过程中利用游标循环结果集

有这么个需求 topic表中有id 和comments数量 commemt表中有 topicid 和id 由于历史原因,【删除评论表中时未同步删除topic中评论数量的值】,所以要求一条语句执行更新。...
  • u010703523
  • u010703523
  • 2015-01-30 15:47:34
  • 2395

oracle调用子存储过程+游标循环实例

一,有子节点的子节点的排序
  • u011518709
  • u011518709
  • 2014-11-05 16:20:36
  • 1130
收藏助手
不良信息举报
您举报文章:存储过程——游标循环
举报原因:
原因补充:

(最多只允许输入30个字)