笑萧亦然


  做一个有用的程序员
  每天都有前进的方向,每天都有新的起点。当我白发时才会有回忆的往事。
posts - 39, comments - 7, trackbacks - 0, articles - 2
  博客园 :: 首页 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理

公告

学习总结之三(SQL SERVER游标CURSOR的使用)

Posted on 2011-03-21 17:50 笑萧亦然 阅读(25) 评论(0) 编辑 收藏


SET LOCK_TIMEOUT 1800 

SET TRANSACTION ISOLATION LEVEL READ COMMITTED


BEGIN TRANSACTION

DECLARE @PRD_NO VARCHAR(30)
DECLARE @CUS_NO VARCHAR(20)
DECLARE @STD_LEVEL VARCHAR(10)
DECLARE @USR VARCHAR(12)

DECLARE MY_CURSOR CURSOR FOR
SELECT DISTINCT PRD_NO,CUS_NO,STD_LEVEL,USR FROM CUS_ML_GGEC HOLDLOCK WHERE PRD_NO+'*'+CUS_NO NOT IN (SELECT PRD_NO+'*'+CUS_NO FROM PRDT_AUTH )

OPEN MY_CURSOR

    FETCH NEXT FROM MY_CURSOR INTO @PRD_NO,@CUS_NO,@STD_LEVEL,@USR

    WHILE (@@FETCH_STATUS = 0)
        BEGIN
            INSERT INTO PRDT_AUTH (PRD_NO,CUS_NO,ZS_NO,STD_LEVEL,USR,SYS_DATE,CLS_ID)
            VALUES( @PRD_NO,@CUS_NO,@PRD_NO+@CUS_NO,@STD_LEVEL,@USR,GETDATE(),'T' )
            FETCH NEXT FROM MY_CURSOR INTO @PRD_NO,@CUS_NO,@STD_LEVEL,@USR       
        END

IF @@ERROR = 0
    COMMIT TRANSACTION
ELSE
    ROLLBACK

或者:

CLOSE MY_CURSOR
  DEALLOCATE MY_CURSOR

 

SET TRANSACTION ISOLATION LEVEL READ COMMITTED