详细内容
存储过程中使用游标执行循环
发布日期:2013-03-14     点击:2891     字体:[ ]

如下存储过程中,定义了游标执行循环,第一句是判断是否存在该存储过程,如果存在则删除,不存在则跳过。

IF EXISTS(SELECT * FROM SYSOBJECTS WHERE NAME='usp_CARRFORM2_SET_VAT_SERIALNO' AND TYPE='P')
DROP PROCEDURE usp_CARRFORM2_SET_VAT_SERIALNO
GO
CREATE PROCEDURE usp_CARRFORM2_SET_VAT_SERIALNO
@emp_id VARCHAR(40)
AS
DECLARE @line_id VARCHAR(40)
DECLARE @serial_id INT

 DECLARE  getVatAndSetSerialNo CURSOR
 FOR
 SELECT Line_ID FROM CARRFORM2_VAT WHERE FORM_NO IN
                            (SELECT FORM_NO FROM FM_FORM_APPROVE
                            WHERE FORM_KIND='CARR.FORM.2'
                            AND APP_EMP_ID=@emp_id                           
                            AND PHASE_ID='CARR.FORM.2.APPH.4'
                            AND APP_STATUS='U'
                            ) ORDER BY FORM_NO,CREATED_DATE
                           
    OPEN getVatAndSetSerialNo
    FETCH NEXT FROM getVatAndSetSerialNo INTO @line_id
    WHILE @@FETCH_STATUS =0
    BEGIN
      SELECT @serial_id=Var_Num FROM CARRFORM2_Serial WHERE Var_Type=4
      UPDATE CARRFORM2_VAT SET Serial_ID=@serial_id WHERE Line_ID=@line_id
      UPDATE CARRFORM2_Serial SET Var_Num=Var_Num+1 WHERE Var_Type=4
     
      FETCH NEXT FROM getVatAndSetSerialNo INTO @line_id
    END
   
    CLOSE getVatAndSetSerialNo
    DEALLOCATE getVatAndSetSerialNo                         
GO

 

用户评论
昵称:匿名 来自:116.7.100.*  
2013/5/10 0:20:12
341
昵称 
内容  *
验证码   
   
Copyright © 2010 zdbase.com All Rights Reserved. 苏ICP备15039389号 可人软件设计