寻找相当于 Oracle 的 SQLERRM。T-SQL 的 ERROR_MESSAGE() 是否完成同样的事情?
问问题
2732 次
2 回答
2
是的,它本质上是一样的......它返回与最近引发的错误异常相关的错误消息,就像SQLERRM
示例用法:
BEGIN TRY
-- Generate a divide-by-zero error.
SELECT 1/0;
END TRY
BEGIN CATCH
SELECT
ERROR_NUMBER() AS ErrorNumber
,ERROR_SEVERITY() AS ErrorSeverity
,ERROR_STATE() AS ErrorState
,ERROR_PROCEDURE() AS ErrorProcedure
,ERROR_LINE() AS ErrorLine
,ERROR_MESSAGE() AS ErrorMessage;
END CATCH;
于 2013-09-05T13:41:48.567 回答
0
您可以在 try/catch 块的范围内使用它。
在 CATCH 块范围之外,@@ERROR 中的错误号是有关 Transact-SQL 代码中错误的唯一可用信息。
您可以使用 @@error 获取错误号,并从 sys.messages 中选择它,假设它是标准错误。如果它是用户定义的错误,您可能必须创建消息。
SET @ErrorVariable = @@ERROR;
SELECT @ErrorVariable AS ErrorID, text
FROM sys.messages
WHERE message_id = @ErrorVariable;
GO
于 2013-09-05T13:47:03.590 回答