存储过程 游标 while @@fetch_status=0 死循环

问题描述

存储过程 游标 while @@fetch_status=0 死循环

这段存储过程加了 while @@fetch_status=0 后会进入死循环 注释这行就可以运行成功 求大神指导

 declare @systems varchar(200) --查询的此服务的其他消费系统
        begin--7
            set @out=@out+'<TargetSysList>'
            declare test cursor
            for select c_user_number from ESB_CONSUME_SYSTEM where c_code = @fid and c_is_examine='1'
            open test
            fetch next from test into @systems
            --while @@fetch_status=0
            begin --10
                if(@systems<>@system)
                begin --8
                    set @out=@out+'<TargetSysCode>'+@systems+'</TargetSysCode>'
                end --8
            end--10
            close test
            deallocate test
        begin --9
            set @out=@out+'</TargetSysList></MGREntry>'
        end --9
        set @out1=@out
        end--7

解决方案

你不取下1行,当然@@fetch_status永远等于0啊!

fetch next from test into @systems
while @@fetch_status=0
begin --10

if(@systems<>@system)
begin --8
set @out=@out+''+@systems+''
end --8

** fetch next from test into @systems**
end--10

解决方案二:

存储过程/使用while和游标
oracle编程 if, for , while, loop, 存储过程,触发器,游标演示
sql server 函数,存储过程,游标以及while和if语句的嵌套使用

时间: 2024-09-17 03:46:45

存储过程 游标 while @@fetch_status=0 死循环的相关文章

Sql存储过程游标循环的用法及sql如何使用cursor写一个简单的循环_MsSql

用游标,和WHILE可以遍历您的查询中的每一条记录并将要求的字段传给变量进行相应的处理 ================== DECLARE @A1 VARCHAR(10), @A2 VARCHAR(10), @A3 INT DECLARE CURSOR YOUCURNAME FOR SELECT A1,A2,A3 FROM YOUTABLENAME OPEN YOUCURNAME fetch next from youcurname into @a1,@a2,@a3 while @@fetch

oracle 11g-oracle 存储过程 游标的问题

问题描述 oracle 存储过程 游标的问题 create or replace procedure test_procedure(planetimetableid in integer , gid in integer ,addpeo in integer,peoCount in integer ) is cursor a_cursor is select id from seats_info where id in(select id from (select t.*,rownum rn f

Oracle存储过程游标用法分析_oracle

本文实例讲述了Oracle存储过程游标用法.分享给大家供大家参考,具体如下: 使用游标的5个步骤 1.声明一些变量用于保存select语句返回的指 2.声明游标,并指定select 语句 3.打开游标 4.从游标中获取记录 5.关闭游标 从游标中获取每一条记录可使用fetch语句.fetch语句将列的指读取到指定的变量中: 语法: fetch cursor_name into variable[, variable ...]; 例子: create or replace procedure se

mysql存储过程 游标 循环使用介绍_Mysql

Mysql的存储过程是从版本5才开始支持的,所以目前一般使用的都可以用到存储过程.今天分享下自己对于Mysql存储过程的认识与了解. 一些简单的调用以及语法规则这里就不在赘述,网上有许多例子.这里主要说说大家常用的游标加循环的嵌套使用. 首先先介绍循环的分类: (1)WHILE ... END WHILE (2)LOOP ... END LOOP (3)REPEAT ... END REPEAT (4)GOTO 这里有三种标准的循环方式:WHILE循环,LOOP循环以及REPEAT循环.还有一种

mysql动态游标学习(mysql存储过程游标)_Mysql

复制代码 代码如下: -- 建立测试表和数据create table webuser (username varchar(10));insert into webuser values ('a1'),('a2'),('a3'),('b1'),('b2'),('b3');commit; -- 建立存储过程drop procedure if exists dynamic_cursor;delimiter //CREATE PROCEDURE dynamic_cursor (IN p_name var

MySQL存储过程游标操作的跳出与继续

最近遇到这样的问题,在MySQL的存储过程中,游标操作时,需要执行一个conitnue的操作.众所周知,MySQL中的游标循环操作常用的有三种,LOOP,REPEAT,WHILE.三种循环,方式大同小异.以前从没用过,所以记下来,方便以后查阅. 1.REPEAT  代码如下 复制代码 REPEAT     Statements;   UNTIL expression END REPEAT demo DECLARE num INT; DECLARE my_string  VARCHAR(255);

数据库ms SQL常用语句二

-------------转换函数--------------------------------------------------------- print cast(123 as varchar(20))+'abc' print convert(varchar(20),123)+'abc' print str(123)+'abc' 语法 使用 CAST: CAST ( expression AS data_type ) 使用 CONVERT: CONVERT (data_type[(len

sql中存储过程和游标简单示例

 代码如下 复制代码 --创建存储过程 sp_tittles  IF EXISTS(SELECT * FROM sys.objects WHERE type='p' AND name='sp_titles')     DROP PROC sp_titles  GO  CREATE PROC sp_titles  AS      DECLARE @ProblemID int,@TitleID int,@item int      --声明一个游标      DECLARE cursor_title

存储过程,游标和触发器实例

原文:存储过程,游标和触发器实例[原创] 自己写的存储过程与游标结合使用的实例,与大家分享,也供自己查阅,仅供参考: --使用游标循环处理,删除重复的记录 declare @UserID int declare @UserName varchar(32) declare @RealName varchar(32) declare @UnitFlag int declare @Email2 varchar(64) declare @Mobile varchar(64) declare @Start