cho*_*obo 6 t-sql stored-procedures sql-server-2008
我正在sql server 2008中编写存储过程.问题是@ErrorMessage out参数始终为null.它似乎与ERROR_MESSAGE()函数有关,因为当我摆脱它时,返回消息的其他部分.
如何让它返回整个errorMessage?
-- Log transaction
INSERT INTO Transactions (TxnId, TypeId, [Date], Amount)
VALUES(@TxnId, @TypeId, @TransDate, @Amount)
-- Check for errors
IF @@ERROR <> 0
BEGIN
PRINT 'Starting third error block'
SET @ErrorCode = 202
SELECT @ErrorMessage = 'Err_TxnId_Exists - Error inserting: ' + ERROR_MESSAGE()
PRINT @ErrorCode
PRINT @ErrorMessage
PRINT 'Ending third error block'
RETURN 1
END
Run Code Online (Sandbox Code Playgroud)
消息输出
该语句已终止.启动第三错误块202
结束第三个错误块
(1排受影响)
结果
(1排受影响)
Fos*_*sco 14
ERROR_MESSAGE()仅在CATCH块内有效.
试一试:
BEGIN TRY
INSERT INTO Transactions (TxnId, TypeId, [Date], Amount)
VALUES (@TxnId, @TypeId, @TransDate, @Amount)
END TRY
BEGIN CATCH
SET @ErrorCode = 202
SET @ErrorMessage = ERROR_MESSAGE()
PRINT @ErrorCode
PRINT @ErrorMessage
END CATCH;
Run Code Online (Sandbox Code Playgroud)