ERROR_SEVERITY (Transact-SQL)

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

構文

ERROR_SEVERITY()

戻り値の型

int

戻り値

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

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

解説

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

ERROR_SEVERITY は、その実行回数、または実行される CATCH ブロックのスコープ内の場所に関係なく、エラーの重大度を返します。これは、@@ERROR などの関数とは対照的です。これらの関数がエラー番号を返すのは、エラーが発生したステートメントの直後のステートメントか、CATCH ブロックの最初のステートメントだけです。

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

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

次のコードは、0 除算エラーを生成する SELECT ステートメントを示しています。エラーの重大度が返されます。

USE AdventureWorks;
GO

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

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

次のコードは、0 除算エラーを生成する SELECT ステートメントを示しています。重大度と共にエラーに関する情報が返されます。

USE AdventureWorks;
GO

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_NUMBER (Transact-SQL)
ERROR_PROCEDURE (Transact-SQL)
ERROR_STATE (Transact-SQL)
RAISERROR (Transact-SQL)
@@ERROR (Transact-SQL)

その他の技術情報

Transact-SQL のエラー情報の取得
データベース エンジン エラーの重大度
Transact-SQL での TRY...CATCH の使用
RAISERROR の使用
@@ERROR の使用

ヘルプおよび情報

SQL Server 2005 の参考資料の入手