【发布时间】:2016-01-28 22:27:04
【问题描述】:
假设我有以下 SQL Server 存储过程:
CREATE PROC TestSP AS
select 'results selected' as column1
RAISERROR('this is an error',16,1)
--RETURN 3
如果我这样称呼它,
DECLARE @ReturnCode int
EXEC @ReturnCode = TestSP
select @ReturnCode as ReturnCode
返回码将为 -6。如果我ALTER PROC 取消注释存储过程中的--RETURN 3 行,并再次调用它,RETURN 3 将覆盖并导致返回码为 3。
如果我从 TRY...CATCH 块中调用该过程,
DECLARE @ReturnCode int
BEGIN TRY
EXEC @ReturnCode = TestSP
END TRY
BEGIN CATCH
PRINT 'An error occurred.'
END CATCH
SELECT @ReturnCode as ReturnCode
返回码将为 NULL。
使用的返回码 (EXEC @ReturnCode = TestSP) 是否与从 TRY...CATCH 块中调用存储过程不兼容?
【问题讨论】:
标签: sql-server error-handling try-catch raiserror