在SQL語句中獲取錯誤信息

在 TRY...CATCH 构造的 CATCH 块的作用域内,您可以使用以下系统函数:
ERROR_LINE(),返回出现错误的行号。
ERROR_MESSAGE(),返回将返回

给应用程序的消息文本。该文本包括为所有可替换参数提供的值,如长度、对象名或时间。
ERROR_NUMBER() 返回错误号。
ERROR_PROCEDURE(),返回出现错误的存储过程或触发器的名称。如果在存储过程或触发器中未出现错误,该函数返回 NULL。
ERROR_SEVERITY() 返回严重性。
ERROR_STATE(),返回状态。
在执行任何 Transact-SQL 语句之后,您可以立即使用 @@ERROR 函数测试错误并检索错误号。
 使用 ERROR_LINE、ERROR_MESSAGE、ERROR_NUMBER、ERROR_PROCEDURE、ERROR_SEVERITY 和 ERROR_STATE
当用于 TRY...CATCH 构造的 CATCH 块的作用域内时,ERROR_LINE、ERROR_MESSAGE、ERROR_NUMBER、ERROR_PROCEDURE、ERROR_SEVERITY 和 ERROR_STATE 函数仅返回错误信息。用于 CATCH 块的作用域外时,它们会返回 NULL。这些函数返回有关导致 CATCH 块被调用的错误的信息。只要是在 CATCH 块的作用域内运行,这些函数即使被引用多次也将返回相同的错误信息。这些函数为 Transact-SQL 语句提供了与返回给应用程序的数据相同的数据。

在嵌套的 CATCH 块中,ERROR_LINE、ERROR_MESSAGE、ERROR_NUMBER、ERROR_PROCEDURE、ERROR_SEVERITY 和 ERROR_STATE 函数返回的错误信息特定于它们在其中被引用的 CATCH 块。例如,外部 TRY...CATCH 构造的 CATCH 块可能具有嵌套 TRY...CATCH 构造。在嵌套的 CATCH 块内,这些函数将返回有关调用内部 CATCH 块的错误的信息。在外部 CATCH 块,这些函数将返回有关调用 CATCH 块的错误的信息。

以下示例通过显示在外部 CATCH 块引用 ERROR_MESSAGE 时,函数返回外部 TRY 块生成的消息文本,说明了此种情况。当在内部 CATCH 块中引用 ERROR_MESSAGE 时,它返回在内部 TRY 块中生成的文本。此示例还说明了在外部 CATCH 块中 ERROR_MESSAGE 始终返回在外部 TRY 块中生成的消息,即使在运行内部 TRY...CATCH 构造后。

 

 

Code

 

可以獲取如下格式的錯誤信息

Msg 8152, Level 16, State 14, Procedure insertTest, Line 35
将截断字符串或二进制数据。

來源:SQL Server 2005 联机丛书

posted @ 2009-06-22 14:30  逍客1  阅读(1580)  评论(0编辑  收藏  举报