有人能说出这个存储过程有什么问题吗?
我想在存储过程中使用transacation但是如果我运行此过程,则会收到以下错误消息:" COMMIT TRANSACTION请求没有相应的BEGIN TRANSACTION"
我没有得到它......我用BEGIN和COMMIT命令尝试了很多选项...
P.S。在while循环中的内容并不重要,错误仍然存在。
有什么想法吗?
如果我在SSMS中使用查询窗口,则会引发错误。
USE db
GO
DECLARE @return_value int,
@str_return nvarchar(100)
EXEC @return_value = [dbo].[proc_xxxx]
@guid = 'xxxxxxxxxxxxxxxxx',
@str_return = @str_return OUTPUT
SELECT @str_return as N'@str_return'
SELECT 'Return Value' = @return_value
GO
也许这就是原因?
-- Declare Cursor
DECLARE xx_cursor CURSOR FOR
SELECT GUID
FROM TABLE;
BEGIN TRY
BEGIN TRAN
OPEN xx_cursor;
-- Run through
FETCH NEXT FROM xx_cursor INTO @guid_xx;
WHILE @@FETCH_STATUS = 0
BEGIN
--DO SOMETHING
FETCH NEXT FROM xx_cursor INTO @guid_xx;
END;
COMMIT TRAN
END TRY
BEGIN CATCH
ROLLBACK TRAN
SET @str_return = 'Error'
END CATCH
CLOSE xx_cursor;
DEALLOCATE xx_cursor;