TRY...CATCH (Transact-SQL)TRY...CATCH (Transact-SQL)

適用対象:Applies to: はいSQL ServerSQL Server (サポートされているすべてのバージョン) yesSQL ServerSQL Server (all supported versions) はいAzure SQL データベースAzure SQL DatabaseYesAzure SQL データベースAzure SQL Database はいAzure SQL Managed InstanceAzure SQL Managed InstanceYesAzure SQL Managed InstanceAzure SQL Managed Instance はいAzure Synapse AnalyticsAzure Synapse AnalyticsyesAzure Synapse AnalyticsAzure Synapse Analytics はいParallel Data WarehouseParallel Data WarehouseyesParallel Data WarehouseParallel Data Warehouse適用対象:Applies to: はいSQL ServerSQL Server (サポートされているすべてのバージョン) yesSQL ServerSQL Server (all supported versions) はいAzure SQL データベースAzure SQL DatabaseYesAzure SQL データベースAzure SQL Database はいAzure SQL Managed InstanceAzure SQL Managed InstanceYesAzure SQL Managed InstanceAzure SQL Managed Instance はいAzure Synapse AnalyticsAzure Synapse AnalyticsyesAzure Synapse AnalyticsAzure Synapse Analytics はいParallel Data WarehouseParallel Data WarehouseyesParallel Data WarehouseParallel Data Warehouse

Transact-SQLTransact-SQL のエラー処理を実装します。これは MicrosoftMicrosoft Visual C# 言語および MicrosoftMicrosoft Visual C++ 言語での例外処理に似ています。Implements error handling for Transact-SQLTransact-SQL that is similar to the exception handling in the MicrosoftMicrosoft Visual C# and MicrosoftMicrosoft Visual C++ languages. Transact-SQLTransact-SQL ステートメントのグループを TRY ブロックで囲むことができます。A group of Transact-SQLTransact-SQL statements can be enclosed in a TRY block. TRY ブロック内でエラーが発生すると、CATCH ブロックで囲まれた別のステートメントのグループに制御が渡されます。If an error occurs in the TRY block, control is passed to another group of statements that is enclosed in a CATCH block.

トピック リンク アイコン Transact-SQL 構文表記規則Topic link icon Transact-SQL Syntax Conventions

構文Syntax

BEGIN TRY  
     { sql_statement | statement_block }  
END TRY  
BEGIN CATCH  
     [ { sql_statement | statement_block } ]  
END CATCH  
[ ; ]  

注意

SQL Server 2014 以前の Transact-SQL 構文を確認するには、以前のバージョンのドキュメントを参照してください。To view Transact-SQL syntax for SQL Server 2014 and earlier, see Previous versions documentation.

引数Arguments

sql_statementsql_statement
任意の Transact-SQLTransact-SQL ステートメントです。Is any Transact-SQLTransact-SQL statement.

statement_blockstatement_block
バッチ内、または BEGIN...END ブロックで囲まれた Transact-SQLTransact-SQL ステートメントの任意のグループです。Any group of Transact-SQLTransact-SQL statements in a batch or enclosed in a BEGIN...END block.

解説Remarks

TRY...CATCH 構造は、データベース接続を閉じない、重大度が 10 を超えるすべての実行エラーを検出します。A TRY...CATCH construct catches all execution errors that have a severity higher than 10 that do not close the database connection.

TRY ブロックの直後には、関連する CATCH ブロックを記述する必要があります。A TRY block must be immediately followed by an associated CATCH block. END TRY ステートメントと BEGIN CATCH ステートメントの間に他のステートメントを含めると、構文エラーが生成されます。Including any other statements between the END TRY and BEGIN CATCH statements generates a syntax error.

TRY...CATCH 構造は複数のバッチをまたぐことはできません。A TRY...CATCH construct cannot span multiple batches. TRY...CATCH 構造は、Transact-SQLTransact-SQL ステートメントの複数のブロックをまたぐことはできません。A TRY...CATCH construct cannot span multiple blocks of Transact-SQLTransact-SQL statements. たとえば、TRY...CATCH 構造で Transact-SQLTransact-SQL ステートメントの 2 つの BEGIN...END ブロックをまたいだり、IF...ELSE 構造をまたいだりすることはできません。For example, a TRY...CATCH construct cannot span two BEGIN...END blocks of Transact-SQLTransact-SQL statements and cannot span an IF...ELSE construct.

TRY ブロックで囲まれたコードでエラーが発生しなかった場合は、TRY ブロック内の最後のステートメントの実行が完了すると、END CATCH ステートメントの直後にあるステートメントに制御が渡されます。If there are no errors in the code that is enclosed in a TRY block, when the last statement in the TRY block has finished running, control passes to the statement immediately after the associated END CATCH statement.

TRY ブロックで囲まれたコードでエラーが発生した場合は、関連する CATCH ブロックの最初のステートメントに制御が渡されます。If there is an error in the code that is enclosed in a TRY block, control passes to the first statement in the associated CATCH block. CATCH ブロック内のコードが完了すると、END CATCH ステートメントの直後にあるステートメントに制御が渡されます。When the code in the CATCH block finishes, control passes to the statement immediately after the END CATCH statement.

注意

END CATCH ステートメントがストアド プロシージャまたはトリガー内の最後のステートメントである場合は、そのストアド プロシージャを呼び出した、またはトリガーを起動したステートメントに制御が渡されます。If the END CATCH statement is the last statement in a stored procedure or trigger, control is passed back to the statement that called the stored procedure or fired the trigger.

CATCH ブロックによってトラップされたエラーは、呼び出し元のアプリケーションに返されません。Errors trapped by a CATCH block are not returned to the calling application. エラー情報の一部をアプリケーションに返す必要がある場合は、CATCH ブロック内のコードがその処理を行います。これには、SELECT 結果セットや、RAISERROR ステートメントおよび PRINT ステートメントなどのメカニズムが使用されます。If any part of the error information must be returned to the application, the code in the CATCH block must do so by using mechanisms such as SELECT result sets or the RAISERROR and PRINT statements.

TRY...CATCH 構造は入れ子にすることができます。TRY...CATCH constructs can be nested. TRY ブロックと CATCH ブロックのどちらにも、入れ子になった TRY...CATCH 構造を含めることができます。Either a TRY block or a CATCH block can contain nested TRY...CATCH constructs. たとえば、CATCH ブロックに TRY...CATCH 構造を埋め込み、CATCH コードによって発生したエラーを処理することができます。For example, a CATCH block can contain an embedded TRY...CATCH construct to handle errors encountered by the CATCH code.

CATCH ブロックで発生したエラーは、他の場所で生成されたエラーと同じように扱われます。Errors encountered in a CATCH block are treated like errors generated anywhere else. CATCH ブロックに入れ子になった TRY...CATCH 構造が含まれている場合、入れ子になった TRY ブロックでエラーが発生すると、入れ子になった CATCH ブロックに制御が渡されます。If the CATCH block contains a nested TRY...CATCH construct, any error in the nested TRY block will pass control to the nested CATCH block. 入れ子になった TRY...CATCH 構造が存在しない場合、エラーは呼び出し元に返されます。If there is no nested TRY...CATCH construct, the error is passed back to the caller.

TRY...CATCH 構造では、TRY ブロック内のコードによって実行されたストアド プロシージャまたはトリガーからの処理されないエラーが検出されます。TRY...CATCH constructs catch unhandled errors from stored procedures or triggers executed by the code in the TRY block. また、ストアド プロシージャまたはトリガーに独自の TRY...CATCH 構造を含めて、それらのコードによって生成されたエラーを処理することもできます。Alternatively, the stored procedures or triggers can contain their own TRY...CATCH constructs to handle errors generated by their code. たとえば、TRY ブロックでストアド プロシージャが実行され、そのストアド プロシージャでエラーが発生した場合、次の方法でエラーを処理できます。For example, when a TRY block executes a stored procedure and an error occurs in the stored procedure, the error can be handled in the following ways:

  • ストアド プロシージャに独自の TRY...CATCH 構造が含まれていない場合、エラーが発生すると、EXECUTE ステートメントを含んでいる TRY ブロックに関連付けられた CATCH ブロックに制御が返されます。If the stored procedure does not contain its own TRY...CATCH construct, the error returns control to the CATCH block associated with the TRY block that contains the EXECUTE statement.

  • ストアド プロシージャに TRY...CATCH 構造が含まれている場合、エラーによってストアド プロシージャ内の CATCH ブロックに制御が渡されます。If the stored procedure contains a TRY...CATCH construct, the error transfers control to the CATCH block in the stored procedure. CATCH ブロックのコードが完了すると、ストアド プロシージャを呼び出した EXECUTE ステートメントの直後にあるステートメントに制御が返されます。When the CATCH block code finishes, control is passed back to the statement immediately after the EXECUTE statement that called the stored procedure.

GOTO ステートメントを使用して TRY ブロックまたは CATCH ブロックに入ることはできません。GOTO statements cannot be used to enter a TRY or CATCH block. GOTO ステートメントは、同じ TRY ブロックまたは CATCH ブロック内のラベルに移動したり、TRY ブロックまたは CATCH ブロックから抜けるために使用できます。GOTO statements can be used to jump to a label inside the same TRY or CATCH block or to leave a TRY or CATCH block.

TRY...CATCH 構造をユーザー定義関数内で使用することはできません。The TRY...CATCH construct cannot be used in a user-defined function.

エラー情報の取得Retrieving Error Information

CATCH ブロックのスコープでは、次のシステム関数を使用して、CATCH ブロックが実行される原因となったエラーに関する情報を取得できます。In the scope of a CATCH block, the following system functions can be used to obtain information about the error that caused the CATCH block to be executed:

  • ERROR_NUMBER() は、エラーの番号を返します。ERROR_NUMBER() returns the number of the error.

  • ERROR_SEVERITY() は、重大度を返します。ERROR_SEVERITY() returns the severity.

  • ERROR_STATE() は、エラー状態番号を返します。ERROR_STATE() returns the error state number.

  • ERROR_PROCEDURE() は、エラーが発生したストアド プロシージャまたはトリガーの名前を返します。ERROR_PROCEDURE() returns the name of the stored procedure or trigger where the error occurred.

  • ERROR_LINE() は、エラーを発生させたルーチン内の行番号を返します。ERROR_LINE() returns the line number inside the routine that caused the error.

  • ERROR_MESSAGE() は、エラー メッセージのテキストの全文を返します。ERROR_MESSAGE() returns the complete text of the error message. このテキストには、長さ、オブジェクト名、回数など、置き換え可能なパラメーターに提供される値が含まれます。The text includes the values supplied for any substitutable parameters, such as lengths, object names, or times.

CATCH ブロックのスコープの外側から呼び出されると、これらの関数は NULL を返します。These functions return NULL if they are called outside the scope of the CATCH block. エラー情報は、CATCH ブロックのスコープ内のどこからでも、これらの関数を使用して取得できます。Error information can be retrieved by using these functions from anywhere within the scope of the CATCH block. たとえば、次のスクリプトは、エラー処理関数を含むストアド プロシージャです。For example, the following script shows a stored procedure that contains error-handling functions. CATCH 構造の TRY...CATCH ブロックでは、このストアド プロシージャを呼び出して、エラーに関する情報を返しています。In the CATCH block of a TRY...CATCH construct, the stored procedure is called and information about the error is returned.

-- Verify that the stored procedure does not already exist.  
IF OBJECT_ID ( 'usp_GetErrorInfo', 'P' ) IS NOT NULL   
    DROP PROCEDURE usp_GetErrorInfo;  
GO  
  
-- Create procedure to retrieve error information.  
CREATE PROCEDURE usp_GetErrorInfo  
AS  
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;  
GO  
  
BEGIN TRY  
    -- Generate divide-by-zero error.  
    SELECT 1/0;  
END TRY  
BEGIN CATCH  
    -- Execute error retrieval routine.  
    EXECUTE usp_GetErrorInfo;  
END CATCH;   

ERROR_* 関数は、ネイティブ コンパイル ストアド プロシージャ内の CATCH ブロックでも機能します。The ERROR_* functions also work in a CATCH block inside a natively compiled stored procedure.

TRY...CATCH 構造の影響を受けないエラーErrors Unaffected by a TRY...CATCH Construct

TRY...CATCH 構造では、次の条件はトラップされません。TRY...CATCH constructs do not trap the following conditions:

  • 重大度が 10 以下の警告または情報メッセージ。Warnings or informational messages that have a severity of 10 or lower.

  • 重大度が 20 以上で、そのセッションの SQL Server データベース エンジンSQL Server Database Engine タスク処理を終了させるエラー。Errors that have a severity of 20 or higher that stop the SQL Server データベース エンジンSQL Server Database Engine task processing for the session. 重大度が 20 以上のエラーが発生し、データベース接続が切断されない場合、TRY...CATCH によってエラーが処理されます。If an error occurs that has severity of 20 or higher and the database connection is not disrupted, TRY...CATCH will handle the error.

  • クライアントの割り込み要求や中断されたクライアント接続などのアテンション。Attentions, such as client-interrupt requests or broken client connections.

  • システム管理者による KILL ステートメントを使用したセッションの終了。When the session is ended by a system administrator by using the KILL statement.

次の種類のエラーは、TRY...CATCH 構造と同じ実行レベルで発生した場合には、CATCH ブロックによって処理されません。The following types of errors are not handled by a CATCH block when they occur at the same level of execution as the TRY...CATCH construct:

  • 構文エラーなど、バッチの実行を妨げるコンパイル エラー。Compile errors, such as syntax errors, that prevent a batch from running.

  • ステートメントレベルの再コンパイルで発生するエラー (コンパイル後の名前の遅延解決により発生するオブジェクト名の解決エラーなど)。Errors that occur during statement-level recompilation, such as object name resolution errors that occur after compilation because of deferred name resolution.

  • オブジェクト名解決エラーObject name resolution errors

これらのエラーは、バッチ、ストアド プロシージャ、またはトリガーを実行したレベルに返されます。These errors are returned to the level that ran the batch, stored procedure, or trigger.

TRY ブロック内の下位の実行レベル (たとえば、sp_executesql またはユーザー定義のストアド プロシージャを実行しているとき) でのコンパイル中またはステートメントレベルの再コンパイル中にエラーが発生した場合、そのエラーは TRY...CATCH 構造よりも下位のレベルで発生し、関連する CATCH ブロックによって処理されます。If an error occurs during compilation or statement-level recompilation at a lower execution level (for example, when executing sp_executesql or a user-defined stored procedure) inside the TRY block, the error occurs at a lower level than the TRY...CATCH construct and will be handled by the associated CATCH block.

次の例は、SELECT ステートメントによって生成されたオブジェクト名解決エラーが TRY...CATCH 構造でキャッチされず、同じ SELECT ステートメントをストアド プロシージャ内で実行した場合には CATCH ブロックでキャッチされることを示しています。The following example shows how an object name resolution error generated by a SELECT statement is not caught by the TRY...CATCH construct, but is caught by the CATCH block when the same SELECT statement is executed inside a stored procedure.

BEGIN TRY  
    -- Table does not exist; object name resolution  
    -- error not caught.  
    SELECT * FROM NonexistentTable;  
END TRY  
BEGIN CATCH  
    SELECT   
        ERROR_NUMBER() AS ErrorNumber  
       ,ERROR_MESSAGE() AS ErrorMessage;  
END CATCH  

このエラーはキャッチされず、制御は TRY...CATCH 構造から出て、1 つ上位のレベルに渡されます。The error is not caught and control passes out of the TRY...CATCH construct to the next higher level.

この SELECT ステートメントをストアド プロシージャ内で実行すると、エラーは TRY ブロックよりも下位のレベルで発生します。Running the SELECT statement inside a stored procedure will cause the error to occur at a level lower than the TRY block. このエラーは TRY...CATCH 構造によって処理されます。The error will be handled by the TRY...CATCH construct.

-- Verify that the stored procedure does not exist.  
IF OBJECT_ID ( N'usp_ExampleProc', N'P' ) IS NOT NULL   
    DROP PROCEDURE usp_ExampleProc;  
GO  
  
-- Create a stored procedure that will cause an   
-- object resolution error.  
CREATE PROCEDURE usp_ExampleProc  
AS  
    SELECT * FROM NonexistentTable;  
GO  
  
BEGIN TRY  
    EXECUTE usp_ExampleProc;  
END TRY  
BEGIN CATCH  
    SELECT   
        ERROR_NUMBER() AS ErrorNumber  
        ,ERROR_MESSAGE() AS ErrorMessage;  
END CATCH;  

コミット不可能なトランザクションと XACT_STATEUncommittable Transactions and XACT_STATE

TRY ブロックで生成されたエラーによって現在のトランザクションの状態が無効になる場合、そのトランザクションはコミット不可能なトランザクションに分類されます。If an error generated in a TRY block causes the state of the current transaction to be invalidated, the transaction is classified as an uncommittable transaction. 通常は TRY ブロックの外部でトランザクションを終了させるエラーが、TRY ブロックの内部で発生すると、トランザクションはコミット不可能な状態になります。An error that ordinarily ends a transaction outside a TRY block causes a transaction to enter an uncommittable state when the error occurs inside a TRY block. コミット不可能なトランザクションでは、読み取り操作または ROLLBACK TRANSACTION のみを実行できます。An uncommittable transaction can only perform read operations or a ROLLBACK TRANSACTION. このトランザクションで、書き込み操作または COMMIT TRANSACTION を生成する Transact-SQLTransact-SQL ステートメントを実行することはできません。The transaction cannot execute any Transact-SQLTransact-SQL statements that would generate a write operation or a COMMIT TRANSACTION. XACT_STATE 関数は、トランザクションがコミット不可能なトランザクションと分類されている場合、値 -1 を返します。The XACT_STATE function returns a value of -1 if a transaction has been classified as an uncommittable transaction. バッチが完了すると、データベース エンジンDatabase Engineによってコミット不可能なトランザクションがロールバックされます。When a batch finishes, the データベース エンジンDatabase Engine rolls back any active uncommittable transactions. トランザクションがコミット不可能な状態になったときにエラー メッセージが送信されなかった場合、バッチが完了すると、エラー メッセージがクライアント アプリケーションに送信されます。If no error message was sent when the transaction entered an uncommittable state, when the batch finishes, an error message will be sent to the client application. これは、コミット不可能なトランザクションが検出され、ロールバックされたことを示します。This indicates that an uncommittable transaction was detected and rolled back.

コミット不可能なトランザクションと XACT_STATE 関数の詳細については、「XACT_STATE (Transact-SQL)」を参照してください。For more information about uncommittable transactions and the XACT_STATE function, see XACT_STATE (Transact-SQL).

Examples

A.A. TRY...CATCH の使用Using TRY...CATCH

次の例は、0 除算エラーを生成する SELECT ステートメントを示しています。The following example shows a SELECT statement that will generate a divide-by-zero error. このエラーにより、関連する CATCH ブロックに実行が移動します。The error causes execution to jump to the associated CATCH block.

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  

B.B. トランザクション内で TRY...CATCH を使用するUsing TRY...CATCH in a transaction

次の例では、トランザクション内での TRY...CATCH ブロックの動作を示しています。The following example shows how a TRY...CATCH block works inside a transaction. TRY ブロック内のステートメントにより、制約違反エラーが生成されます。The statement inside the TRY block generates a constraint violation error.

BEGIN TRANSACTION;  
  
BEGIN TRY  
    -- Generate a constraint violation error.  
    DELETE FROM Production.Product  
    WHERE ProductID = 980;  
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;  
  
    IF @@TRANCOUNT > 0  
        ROLLBACK TRANSACTION;  
END CATCH;  
  
IF @@TRANCOUNT > 0  
    COMMIT TRANSACTION;  
GO  

C.C. TRY...CATCH と XACT_STATE を使用するUsing TRY...CATCH with XACT_STATE

次の例では、TRY...CATCH 構造を使用して、トランザクション内で発生するエラーを処理する方法を示しています。The following example shows how to use the TRY...CATCH construct to handle errors that occur inside a transaction. XACT_STATE 関数により、トランザクションをコミットすべきか、またはロールバックすべきかが決定されます。The XACT_STATE function determines whether the transaction should be committed or rolled back. この例では SET XACT_ABORTON です。In this example, SET XACT_ABORT is ON. これにより、制約違反エラーが発生したときに、トランザクションはコミット不可能になります。This makes the transaction uncommittable when the constraint violation error occurs.

-- Check to see whether this stored procedure exists.  
IF OBJECT_ID (N'usp_GetErrorInfo', N'P') IS NOT NULL  
    DROP PROCEDURE usp_GetErrorInfo;  
GO  
  
-- Create procedure to retrieve error information.  
CREATE PROCEDURE usp_GetErrorInfo  
AS  
    SELECT   
         ERROR_NUMBER() AS ErrorNumber  
        ,ERROR_SEVERITY() AS ErrorSeverity  
        ,ERROR_STATE() AS ErrorState  
        ,ERROR_LINE () AS ErrorLine  
        ,ERROR_PROCEDURE() AS ErrorProcedure  
        ,ERROR_MESSAGE() AS ErrorMessage;  
GO  
  
-- SET XACT_ABORT ON will cause the transaction to be uncommittable  
-- when the constraint violation occurs.   
SET XACT_ABORT ON;  
  
BEGIN TRY  
    BEGIN TRANSACTION;  
        -- A FOREIGN KEY constraint exists on this table. This   
        -- statement will generate a constraint violation error.  
        DELETE FROM Production.Product  
            WHERE ProductID = 980;  
  
    -- If the DELETE statement succeeds, commit the transaction.  
    COMMIT TRANSACTION;  
END TRY  
BEGIN CATCH  
    -- Execute error retrieval routine.  
    EXECUTE usp_GetErrorInfo;  
  
    -- Test XACT_STATE:  
        -- If 1, the transaction is committable.  
        -- If -1, the transaction is uncommittable and should   
        --     be rolled back.  
        -- XACT_STATE = 0 means that there is no transaction and  
        --     a commit or rollback operation would generate an error.  
  
    -- Test whether the transaction is uncommittable.  
    IF (XACT_STATE()) = -1  
    BEGIN  
        PRINT  
            N'The transaction is in an uncommittable state.' +  
            'Rolling back transaction.'  
        ROLLBACK TRANSACTION;  
    END;  
  
    -- Test whether the transaction is committable.
    -- You may want to commit a transaction in a catch block if you want to commit changes to statements that ran prior to the error.
    IF (XACT_STATE()) = 1  
    BEGIN  
        PRINT  
            N'The transaction is committable.' +  
            'Committing transaction.'  
        COMMIT TRANSACTION;     
    END;  
END CATCH;  
GO  

例: Azure Synapse AnalyticsAzure Synapse AnalyticsParallel Data WarehouseParallel Data WarehouseExamples: Azure Synapse AnalyticsAzure Synapse Analytics and Parallel Data WarehouseParallel Data Warehouse

D.D. TRY...CATCH の使用Using TRY...CATCH

次の例は、0 除算エラーを生成する SELECT ステートメントを示しています。The following example shows a SELECT statement that will generate a divide-by-zero error. このエラーにより、関連する CATCH ブロックに実行が移動します。The error causes execution to jump to the associated CATCH block.

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_MESSAGE() AS ErrorMessage;  
END CATCH;  
GO  

参照See Also

THROW (Transact-SQL) THROW (Transact-SQL)
データベース エンジン エラーの重大度 Database Engine Error Severities
ERROR_LINE (Transact-SQL) ERROR_LINE (Transact-SQL)
ERROR_MESSAGE (Transact-SQL) ERROR_MESSAGE (Transact-SQL)
ERROR_NUMBER (Transact-SQL) ERROR_NUMBER (Transact-SQL)
ERROR_PROCEDURE (Transact-SQL) ERROR_PROCEDURE (Transact-SQL)
ERROR_SEVERITY (Transact-SQL) ERROR_SEVERITY (Transact-SQL)
ERROR_STATE (Transact-SQL) ERROR_STATE (Transact-SQL)
RAISERROR (Transact-SQL) RAISERROR (Transact-SQL)
@@ERROR (Transact-SQL) @@ERROR (Transact-SQL)
GOTO (Transact-SQL) GOTO (Transact-SQL)
BEGIN...END (Transact-SQL) BEGIN...END (Transact-SQL)
XACT_STATE (Transact-SQL) XACT_STATE (Transact-SQL)
SET XACT_ABORT (Transact-SQL)SET XACT_ABORT (Transact-SQL)