注意:将游标封装在事务中可以防止操作不完整性======+脏读
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
原文:http://www.cnblogs.com/Penfield/p/4370792.html