如何将错误消息作为select语句SQL Server 2008返回?

Min*_*iel 1 sql sql-server visual-studio-2010 visual-studio

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

喜欢

SELECT ** FROM emp 
Run Code Online (Sandbox Code Playgroud)

将返回以下错误

    Msg 102, Level 15, State 1, Line 1
    Incorrect syntax near '*'.
Run Code Online (Sandbox Code Playgroud)

我只需要将第二行作为SELECT声明返回

我试过@@ ERROR,但看起来它只返回错误代码

我正在做的是验证来自客户端的sql语句,所以如果有一种方法可以在没有命中服务器的情况下执行此操作,那么我也会使用VB

谢谢

Rem*_*anu 6

你确实看到了Incorrect syntax near '*'.,不是吗?这意味着它被退回了!

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

因此,为了给出一个示例基础,请将代码包装在BEGIN TRY/BEGIN CATCH中,并在不同的批处理中使用不正确的语法:

begin try
    exec sp_executesql N'SELECT ** FROM emp';
    SELECT NULL;
end try
begin catch
    select ERROR_MESSAGE();
end catch
Run Code Online (Sandbox Code Playgroud)