一个游标的简单操作(use transaction)

注意:将游标封装在事务中可以防止操作不完整性======+脏读

begin try
begin transaction
DECLARE @Name varchar(10),
        @Sex bit,
        @Married bit,
        @Phone char(10),
        @ChineseSex char(2),
        @ChineseMarried char(4)
DECLARE Studio_Cursor CURSOR FOR 
  SELECT 姓名, 员工性别, 婚姻状况, 电话号码 FROM 飞狐工作室
OPEN Studio_Cursor
FETCH NEXT FROM Studio_Cursor 
  INTO @Name, @Sex, @Married, @Phone
WHILE @@FETCH_STATUS = 0
BEGIN
    PRINT '员工姓名: ' + @Name
    IF (@Sex = 1)
       SET @ChineseSex = '男'
    ELSE
       SET @ChineseSex = '女'

    IF (@Married = 1)
       SET @ChineseMarried = '已婚'
    ELSE
SET @ChineseMarried = '未婚'

    PRINT '性   别: ' + @ChineseSex
    PRINT '婚姻状况: ' + @ChineseMarried
    PRINT '电话号码: ' + @Phone
    PRINT REPLICATE('-',30)

    FETCH NEXT FROM Studio_Cursor
      INTO @Name, @Sex, @Married, @Phone
END
CLOSE Studio_Cursor        
DEALLOCATE Studio_Cursor 
commit transaction
end try

begin catch
print error_message()
rollback transaction
raiserror('Error occurred when excuting',23,1)
end catch

posted on 2015-03-27 08:41  飞哥Penfield  阅读(1041)  评论(0)    收藏  举报

导航