次の方法で共有


ERROR_NUMBER (Transact-SQL)

TRY...CATCH 構造の CATCH ブロックの実行を引き起こしたエラーのエラー番号を返します。

適用対象: SQL Server (SQL Server 2008 から現在のバージョンまで)、Windows Azure SQL データベース (初回のリリースから現在のバージョンまで)

トピック リンク アイコン Transact-SQL 構文表記規則

構文

ERROR_NUMBER ( )

戻り値の型

int

戻り値

CATCH ブロックで呼び出されると、CATCH ブロックの実行を引き起こしたエラー メッセージのエラー番号を返します。

CATCH ブロックのスコープ外で呼び出された場合は、NULL を返します。

説明

この関数は、CATCH ブロックのスコープ内の任意の場所で呼び出すことができます。

ERROR_NUMBER は、その実行回数、または実行される CATCH ブロックのスコープ内の場所に関係なく、エラー番号を返します。 これは、エラーを引き起こしたステートメントの直後のステートメント、または CATCH ブロックの最初のステートメントでのみエラー番号を返す @@ERROR とは対照的です。

入れ子になった CATCH ブロックでは、ERROR_NUMBER は、参照されている CATCH ブロックのスコープに固有のエラー番号を返します。 たとえば、外部の TRY...CATCH 構造の CATCH ブロックには、入れ子になった TRY...CATCH 構造を含めることができます。 入れ子になった CATCH ブロック内では、ERROR_NUMBER は、入れ子になった CATCH ブロックを呼び出したエラーの番号を返します。 ERROR_NUMBER が外部の CATCH ブロックで実行されると、その CATCH ブロックを呼び出したエラーの番号が返されます。

使用例

A. CATCH ブロックで ERROR_NUMBER を使用する

次の例では、0 除算エラーを生成する SELECT ステートメントを示します。 エラーの番号が返されます。

BEGIN TRY
    -- Generate a divide-by-zero error.
    SELECT 1/0;
END TRY
BEGIN CATCH
    SELECT ERROR_NUMBER() AS ErrorNumber;
END CATCH;
GO

B. CATCH ブロックで ERROR_NUMBER を他のエラー処理ツールと一緒に使用する

次の例では、0 除算エラーを生成する SELECT ステートメントを示します。 エラー番号と共に、エラーに関連する情報が返されます。

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;
GO

関連項目

参照

sys.messages (Transact-SQL)

TRY...CATCH (Transact-SQL)

ERROR_LINE (Transact-SQL)

ERROR_MESSAGE (Transact-SQL)

ERROR_PROCEDURE (Transact-SQL)

ERROR_SEVERITY (Transact-SQL)

ERROR_STATE (Transact-SQL)

RAISERROR (Transact-SQL)

@@ERROR (Transact-SQL)