ERROR_PROCEDURE(Transact-SQL)
적용 대상: SQL Server Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System(PDW) Microsoft Fabric의 SQL 분석 엔드포인트 Microsoft Fabric의 웨어하우스
이 함수는 해당 오류가 TRY...CATCH 구문의 CATCH 블록이 실행되게 하는 경우 오류가 발생한 저장 프로시저나 트리거의 이름을 반환합니다.
- SQL Server 2017을 통해 현재 버전 반환
schema_name.stored_procedure_name
- SQL Server 2016이 반환됩니다.
stored_procedure_name
구문
ERROR_PROCEDURE ( )
반환 형식
nvarchar(128)
Return Value
CATCH 블록에서 호출된 경우 ERROR_PROCEDURE
는 오류가 발생한 저장 프로시저나 트리거의 이름을 반환합니다.
ERROR_PROCEDURE
는 오류가 저장 프로시저나 트리거 내에서 발생하지 않은 경우 NULL을 반환합니다.
ERROR_PROCEDURE
는 CATCH 블록 범위 밖에서 호출된 경우 NULL을 반환합니다.
설명
ERROR_PROCEDURE
는 CATCH 블록 범위 내의 어떤 위치에서나 호출을 지원합니다.
ERROR_PROCEDURE
는 CATCH
블록 범위 내에서 실행 위치나 실행 횟수에 관계 없이 오류가 발생하는 저장 프로시저 또는 트리거의 이름을 반환합니다. 이것은 오류가 발생한 명령문 바로 다음 명령문에 오류 번호만 반환하는 @@ERROR 같은 함수와 대조적입니다.
예: Azure Synapse Analytics 및 분석 플랫폼 시스템(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)
참고 항목
sys.messages(Transact-SQL)
TRY...CATCH(Transact-SQL)
ERROR_LINE(Transact-SQL)
ERROR_MESSAGE(Transact-SQL)
ERROR_NUMBER(Transact-SQL)
ERROR_SEVERITY(Transact-SQL)
ERROR_STATE(Transact-SQL)
RAISERROR(Transact-SQL)
@@ERROR(Transact-SQL)