如何以select语句SQL server 2008返回错误消息?

如何以select语句SQL server 2008返回错误消息?,sql,sql-server,visual-studio-2010,visual-studio,Sql,Sql Server,Visual Studio 2010,Visual Studio,在SQL SERVER 2008中,如何将错误消息作为select语句返回 像 将返回以下错误 我只需要将第二行作为SELECT语句返回 我尝试了@@ERROR,但它似乎只返回了错误代码 我所做的是从客户端验证sql语句,因此如果有一种方法可以在不点击服务器的情况下完成这项工作,那么我使用的也是VB 谢谢您可以使用错误消息() 但是您的错误看起来像编译错误,所以它对您没有帮助。只有在使用动态SQL时才能捕获它:) 只是为了测试一下 begin try exec sp_executesql

在SQL SERVER 2008中,如何将错误消息作为select语句返回

将返回以下错误

我只需要将第二行作为
SELECT
语句返回

我尝试了@@ERROR,但它似乎只返回了错误代码

我所做的是从客户端验证sql语句,因此如果有一种方法可以在不点击服务器的情况下完成这项工作,那么我使用的也是VB


谢谢

您可以使用
错误消息()

但是您的错误看起来像编译错误,所以它对您没有帮助。只有在使用动态SQL时才能捕获它:) 只是为了测试一下

begin try
    exec sp_executesql
        @stmt = N'SELECT ** FROM emp'
end try
begin catch
    select error_message()
end catch
您还可以查看
error\u procedure()
error\u line()
error\u state()
等等

更新如果您试图在客户端处理服务器错误,我建议您阅读更多有关VB异常的信息。
尝试此链接

您可以使用
错误消息()

但是您的错误看起来像编译错误,所以它对您没有帮助。只有在使用动态SQL时才能捕获它:) 只是为了测试一下

begin try
    exec sp_executesql
        @stmt = N'SELECT ** FROM emp'
end try
begin catch
    select error_message()
end catch
您还可以查看
error\u procedure()
error\u line()
error\u state()
等等

更新如果您试图在客户端处理服务器错误,我建议您阅读更多有关VB异常的信息。
请尝试此链接。

您确实看到“*”附近的
语法不正确。
,不是吗?这意味着它被返回了

您可能想知道如何检索错误消息文本,答案是您只能捕获执行期间发生的错误(语法错误是编译错误,无法在同一批中捕获),并且必须使用BEGIN。。。尝试/开始。。。挡块。在catch块内,函数将返回捕获的异常的文本

因此,要根据您的情况给出一个示例,请将代码包装在BEGIN TRY/BEGIN CATCH中,并在不同的批处理中使用不正确的语法:

begin try
    exec sp_executesql N'SELECT ** FROM emp';
    SELECT NULL;
end try
begin catch
    select ERROR_MESSAGE();
end catch

您确实看到“*”附近的
语法不正确。
,不是吗?这意味着它被返回了

您可能想知道如何检索错误消息文本,答案是您只能捕获执行期间发生的错误(语法错误是编译错误,无法在同一批中捕获),并且必须使用BEGIN。。。尝试/开始。。。挡块。在catch块内,函数将返回捕获的异常的文本

因此,要根据您的情况给出一个示例,请将代码包装在BEGIN TRY/BEGIN CATCH中,并在不同的批处理中使用不正确的语法:

begin try
    exec sp_executesql N'SELECT ** FROM emp';
    SELECT NULL;
end try
begin catch
    select ERROR_MESSAGE();
end catch

你想在什么背景下使用这个?你能在客户端代码中捕捉到错误消息吗?不,我不能,我正在尝试,但在客户端找不到任何方法来执行此操作:不点击服务器。根据您的需要可能会有所帮助。您试图在什么环境下使用此功能?你能在客户端代码中捕捉到错误消息吗?不,我不能,我正在尝试,但在客户端找不到任何方法来执行此操作:不点击服务器。根据您的需要可能会有所帮助。
我所做的是从客户端验证sql语句
这与您所问的问题非常不同。。。你不能。无法在外部使用SQL Server验证T-SQL。您可以使用解析一个不执行的语句,您能告诉我当语句有效时如何返回null吗?感谢您查看修改后的示例。SELECT NULL仅在未引发异常的情况下执行。
我所做的是验证客户端的sql语句
这与您所问的问题非常不同。。。你不能。无法在外部使用SQL Server验证T-SQL。您可以使用解析一个不执行的语句,您能告诉我当语句有效时如何返回null吗?感谢您查看修改后的示例。仅当未引发异常时才执行SELECT NULL。