寻找相当于Oracle的SQLERRM。 T-SQL的ERROR_MESSAGE()是否完成了同样的事情?
答案 0 :(得分:0)
是的,它基本上是一样的......它返回与最近引发的错误异常相关的错误消息,就像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;
答案 1 :(得分: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