1

SQL SERVER 2008 でエラー メッセージを select ステートメントとして返すにはどうすればよいですか

お気に入り

SELECT ** FROM emp 

次のエラーが返されます

    Msg 102, Level 15, State 1, Line 1
    Incorrect syntax near '*'.

SELECTステートメントとして返される2行目が必要です

@@ERROR を試してみましたが、エラー コードだけが返されるようです

私がやっているのは、クライアント側からSQLステートメントを検証することです。サーバーにアクセスせずにこれを行う方法があれば、これも良いでしょう。私はVBを使用しています

ありがとう

4

2 に答える 2

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
于 2012-11-01T14:11:44.280 に答える
3

使用できますerror_message()

しかし、あなたのエラーはコンパイルエラーのように見えるので、役に立ちません。動的SQLを使用する場合にのみキャッチできます:)テストするだけです

begin try
    exec sp_executesql
        @stmt = N'SELECT ** FROM emp'
end try
begin catch
    select error_message()
end catch

error_procedure()また、error_line()error_state()などもご覧いただけます。

更新クライアントでサーバー エラーを処理しようとしている場合は、VB の例外について詳しく読むことをお勧めします。このリンクを試してくださいhttp://msdn.microsoft.com/en-us/library/aa289505(v=vs.71).aspx

于 2012-11-01T14:09:47.207 に答える