[MS-SQL] ERROR_LINE(Transact-SQL)

TRY...CATCH 구문의 CATCH 블록 실행을 유발한 오류가 발생한 줄 번호를 반환합니다.

구문

ERROR_LINE()


반환 값
CATCH 블록에서 호출된 경우 다음을 반환합니다.

오류가 발생한 줄 번호를 반환합니다.


오류가 저장 프로시저 또는 트리거에서 발생한 경우 루틴 내의 줄 번호를 반환합니다.


CATCH 블록 외부에서 호출된 경우 NULL을 반환합니다.

주의
이 함수는 CATCH 블록 내의 어떤 위치에서도 호출할 수 있습니다.

ERROR_LINE은 호출 횟수 또는 CATCH 블록 내에서 호출된 위치에 관계 없이 오류가 발생한 줄 번호를 반환합니다. 이것은 오류가 발생한 문 바로 다음 문 또는 CATCH 블록의 첫 번째 문에 오류 번호를 반환하는 @@ERROR와 대조적입니다.

CATCH 블록이 중첩된 경우 ERROR_LINE은 참조되는 CATCH 블록의 범위에 해당하는 오류 줄 번호를 반환합니다. 예를 들어 TRY...CATCH 구조의 CATCH 블록에는 중첩된 TRY...CATCH 구문이 포함될 수 있습니다. 중첩된 CATCH 블록 내에 있는 ERROR_LINE은 중첩된 CATCH 블록을 호출한 오류의 줄 번호를 반환합니다. 외부 CATCH 블록에서 ERROR_LINE을 실행하면 해당 CATCH 블록을 호출한 오류의 줄 번호를 반환합니다.

반환 형식
INT


1. CATCH 블록에서 ERROR_LINE 사용
다음 코드 예에서는 0으로 나누기 오류를 생성하는 SELECT 문을 보여 줍니다. 오류가 발생한 줄 번호가 반환됩니다.

------------------------------------------------------------------------------------------
USE AdventureWorks;
GO

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


2. 저장 프로시저의 오류 줄 번호 반환을 위해 CATCH 블록에서 ERROR_LINE 사용
다음 코드 예에서는 0으로 나누기 오류를 생성하는 저장 프로시저를 보여 줍니다. ERROR_LINE은 오류가 발생한 저장 프로시저의 줄 번호를 반환합니다.


------------------------------------------------------------------------------------------
-- 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_LINE() AS ErrorLine;
END CATCH;
GO
------------------------------------------------------------------------------------------


3. CATCH 블록에서 다른 오류 처리 도구와 함께 ERROR_LINE 사용
다음 코드 예에서는 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
------------------------------------------------------------------------------------------


참고 항목
참조
TRY...CATCH(Transact-SQL)
ERROR_NUMBER(Transact-SQL)
ERROR_MESSAGE(Transact-SQL)
ERROR_PROCEDURE(Transact-SQL)
ERROR_SEVERITY(Transact-SQL)
ERROR_STATE(Transact-SQL)
RAISERROR(Transact-SQL)
@@ERROR(Transact-SQL)

관련 자료
Transact-SQL의 오류 정보 검색
Transact-SQL에서 TRY...CATCH 사용
RAISERROR 사용
데이터베이스 엔진 오류 심각도
크리에이티브 커먼즈 라이센스
Creative Commons License
이올린에 북마크하기

Posted by 홍반장

2009/01/22 11:43 2009/01/22 11:43
Response
No Trackback , No Comment
RSS :
http://tcbs17.cafe24.com/tc/rss/response/3919

Trackback URL : http://tcbs17.cafe24.com/tc/trackback/3919

« Previous : 1 : ... 2514 : 2515 : 2516 : 2517 : 2518 : 2519 : 2520 : 2521 : 2522 : ... 6391 : Next »

블로그 이미지

- 홍반장

Archives

Recent Trackbacks

Calendar

«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31        
Statistics Graph

Site Stats

Total hits:
250709
Today:
688
Yesterday:
295