Applies to:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Analytics Platform System (PDW)
Microsoft Fabric の SQL 分析エンドポイント
Microsoft Fabric のウェアハウス
この関数は、エラーが発生したストアド プロシージャまたはトリガーの名前を返します。このエラーによって、CATCH
コンストラクトのTRY...CATCH
ブロックが実行された場合です。
- SQL Server 2017 (14.x) 以降のバージョンでは、
schema_name.stored_procedure_name
- SQL Server 2016 (13.x) と Azure SQL Database の戻り値
stored_procedure_name
構文
ERROR_PROCEDURE ( )
戻り値の型
nvarchar(128)
戻り値
CATCH
ブロックで呼び出されると、ERROR_PROCEDURE
はエラーが発生したストアド プロシージャまたはトリガーの名前を返します。
ERROR_PROCEDURE
は、ストアド プロシージャまたはトリガー内でエラーが発生しなかった場合に NULL
を返します。
ERROR_PROCEDURE
は、NULL
ブロックのスコープ外で呼び出されたときにCATCH
を返します。
解説
ERROR_PROCEDURE
は、 CATCH
ブロックのスコープ内の任意の場所で呼び出しをサポートします。
実行された回数、または ERROR_PROCEDURE
ブロックのスコープ内で実行される場所に関係なく、CATCH
は、エラーが発生したストアド プロシージャまたはトリガーの名前を返します。 この結果は、 @@ERROR
などの関数とは対照的です。この関数は、エラーの原因となる関数の直後のステートメント内のエラー番号のみを返します。
例: Azure Synapse Analytics、Analytics Platform System (PDW)
A。 CATCH ブロックでERROR_PROCEDUREを使用する
この例では、0 除算エラーを生成したストアド プロシージャを示します。
ERROR_PROCEDURE
は、エラーが発生したストアド プロシージャの名前を返します。
-- Verify that the stored procedure does not already exist.
IF OBJECT_ID('usp_ExampleProc', 'P') IS NOT NULL
DROP PROCEDURE usp_ExampleProc;
GO
-- Create a stored procedure that
-- generates a divide-by-zero error.
CREATE PROCEDURE usp_ExampleProc
AS
SELECT 1 / 0;
GO
BEGIN TRY
-- Execute the stored procedure inside the TRY block.
EXECUTE usp_ExampleProc;
END TRY
BEGIN CATCH
SELECT ERROR_PROCEDURE() AS ErrorProcedure;
END CATCH;
GO
結果セットは次のとおりです。
-----------
(0 row(s) affected)
ErrorProcedure
--------------------
usp_ExampleProc
(1 row(s) affected)
B. 他のエラー処理ツールと共に CATCH ブロックでERROR_PROCEDUREを使用する
この例では、0 除算エラーを生成したストアド プロシージャを示します。 ストアド プロシージャは、エラーが発生したストアド プロシージャの名前と共に、エラーに関する情報を返します。
-- Verify that the stored procedure does not already exist.
IF OBJECT_ID('usp_ExampleProc', 'P') IS NOT NULL
DROP PROCEDURE usp_ExampleProc;
GO
-- Create a stored procedure that
-- generates a divide-by-zero error.
CREATE PROCEDURE usp_ExampleProc
AS
SELECT 1 / 0;
GO
BEGIN TRY
-- Execute the stored procedure inside the TRY block.
EXECUTE usp_ExampleProc;
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,
ERROR_LINE() AS ErrorLine;
END CATCH;
GO
結果セットは次のとおりです。
-----------
(0 row(s) affected)
ErrorNumber ErrorSeverity ErrorState ErrorProcedure ErrorMessage ErrorLine
----------- ------------- ----------- ---------------- ---------------------------------- -----------
8134 16 1 usp_ExampleProc Divide by zero error encountered. 6
(1 row(s) affected)