嗨,我有一个存储过程,我已经按照要求进行了事务处理,这是我的SP
CREATE PROCEDURE ProcName
@Id INT,
@user_id INT
AS
BEGIN
BEGIN TRANSACTION [transName]
BEGIN TRY
DELETE
FROM table1
WHERE UserId= @user_id
UPDATE table2
SET DATE_MODIFIED = GETDATE()
WHERE ID= @Id
COMMIT TRANSACTION [transName]
END TRY
BEGIN CATCH
ROLLBACK TRANSACTION [transName]
THROW
END CATCH
END
我在THROW
附近得到了一个类似于exeception的错误语法,这可以告诉我哪里出了问题。
得到答案
CREATE PROCEDURE ProcName
@Id INT,
@user_id INT
AS
BEGIN
BEGIN TRANSACTION [transName]
BEGIN TRY
DELETE
FROM table1
WHERE UserId= @user_id
UPDATE table2
SET DATE_MODIFIED = GETDATE()
WHERE ID= @Id
COMMIT TRANSACTION [transName]
END TRY
BEGIN CATCH
IF @@TRANCOUNT > 0
ROLLBACK TRANSACTION;
DECLARE @ErrorNumber INT = ERROR_NUMBER();
DECLARE @ErrorLine INT = ERROR_LINE();
SELECT CAST(ERROR_NUMBER() AS NVARCHAR(1000));
THROW;
END CATCH
END