您好,欢迎来到[编程问答]网站首页   源码下载   电子书籍   软件下载   专题
当前位置:首页 >> 编程问答 >> MSSQL >> 报游标已存在,游标不存在的问题

报游标已存在,游标不存在的问题(1/2)

来源:网络整理     时间:2016/5/7 0:30:11     关键词:存在,问题

关于网友提出的“报游标已存在,游标不存在的问题”问题疑问,本网通过在网上对“报游标已存在,游标不存在的问题”有关的相关答案进行了整理,供用户进行参考,详细问题解答如下:

问题:报游标已存在,游标不存在的问题
描述:

create procedure U9_BPCS_Insert
as 
DECLARE @U_PONO FLOAT 
DECLARE @U_TPROD CHAR(18)
DECLARE @U_QTY_IN FLOAT 
DECLARE @U_APPLYDATE FLOAT
DECLARE @U_APPLYNO FLOAT
DECLARE @U_APPLYUSER CHAR(18)
DECLARE @U_DEPNAME CHAR(28)
DECLARE @B_TPROD CHAR(18)
DECLARE @B_QTY_BAL FLOAT
 DECLARE BP_Cursor  CURSOR --定义游标
 FOR SELECT TPROD,
            QTY_BAL 
     FROM dbo.M_BAL  --查出需要的集合放到游标中
 OPEN  My_Cursor; --打开游标
 FETCH NEXT FROM BP_Cursor INTO @B_TPROD,
                                @B_QTY_BAL ; --读取第一行数据给到参数
 WHILE @@FETCH_STATUS = 0
 BEGIN
 
     DECLARE U_Cursor  CURSOR
     FOR SELECT PONO,
                TPROD,
                QTY_IN,
                APPLYDATE,
                APPLYNO,
                APPLYUSER,
                DEPNAME
          FROM  dbo.Apply_info
          WHERE TPROD =@B_TPROD
          ORDER BY APPLYDATE DESC
     OPEN  U_Cursor;
     FETCH NEXT FROM U_Cursor INTO @U_PONO,
                                   @U_TPROD,
                                   @U_QTY_IN,
                                   @U_APPLYNO,
                                   @U_APPLYUSER,
                                   @U_DEPNAME,
                                   @U_APPLYDATE
      
      WHILE @@FETCH_STATUS = 0
      BEGIN 
           IF (@B_QTY_BAL<=@U_QTY_IN )
               INSERT INTO dbo.UP_BPCS_MAPPING VALUES(@U_PONO,
                                                      @U_TPROD,
                                                      @B_QTY_BAL,
                                                      @U_APPLYNO,
                                                      @U_APPLYUSER,
                                                      @U_DEPNAME,
                                                      @U_APPLYDATE)
           BREAK
           IF  (@B_QTY_BAL> @U_QTY_IN )   
              set  @B_QTY_BAL= @B_QTY_BAL-@U_QTY_IN
                  INSERT INTO  dbo.UP_BPCS_MAPPING VALUES(@U_PONO,
                                                          @U_TPROD,
                                                          @B_QTY_BAL,
                                                          @U_APPLYNO,
                                                          @U_APPLYUSER,
                                                          @U_DEPNAME,
                                                          @U_APPLYDATE)
           CONTINUE                               
      FETCH NEXT FROM U_Cursor INTO @U_PONO,
                                   @U_TPROD,
                                   @U_QTY_IN,
                                   @U_APPLYNO,
                                   @U_APPLYUSER,
                                   @U_DEPNAME,
                                   @U_APPLYDATE --读取下一行数据
      END
      
 --     DEALLOCATE U_Cursor
 FETCH NEXT FROM BP_Cursor INTO @B_TPROD,
                                @B_QTY_BAL ;     
 END
 CLOSE U_Cursor
 CLOSE BP_Cursor; --关闭游标
 --DEALLOCATE BP_Cursor; --释放游标 
GO

相关图片

相关文章