THROW

SQL Server에서의 트랜잭션과 오류 처리

Miriam Antona

Software Engineer

THROW 구문

  • RAISERROR 문보다 Microsoft가 권장합니다.
THROW [ error_number, message, state ][ ; ]
SQL Server에서의 트랜잭션과 오류 처리

THROW - 매개변수 없이

BEGIN TRY
    SELECT price/0 from orders;
END TRY
BEGIN CATCH
    THROW;    
    SELECT 'This line is executed!' as message;
END CATCH
(0 rows affected) 
Msg. 8134, Level 16, State 1, Line 2
Divide by zero error encountered.
SQL Server에서의 트랜잭션과 오류 처리

THROW - 모호성

BEGIN TRY
    SELECT price/0 from orders;
END TRY
BEGIN CATCH
    SELECT 'This line is executed!'
    THROW;
END CATCH
| THROW                  |
|------------------------|
| This line is executed! |
SQL Server에서의 트랜잭션과 오류 처리

THROW - 모호성

BEGIN TRY
    SELECT price/0 from orders;
END TRY
BEGIN CATCH
    SELECT 'This line is executed!';
    THROW;
END CATCH
| (No column name)       |
|------------------------|
| This line is executed! |
(0 rows affected) 
(1 rows affected)
Msg. 8134, Level 16, State 1, Line 2
Divide by zero error encountered.
SQL Server에서의 트랜잭션과 오류 처리

THROW - 매개변수 사용

THROW error_number, message, state [ ; ]
THROW 52000, 'This is an example', 1;
Msg. 52000, Level 16, State 1, Line 1
This is an example
SQL Server에서의 트랜잭션과 오류 처리

THROW - 매개변수 사용

BEGIN TRY
    IF NOT EXISTS (SELECT * FROM staff WHERE staff_id = 15)
        THROW 51000, 'This is an example', 1;
END TRY
BEGIN CATCH
    SELECT ERROR_MESSAGE() AS message;
END CATCH
| THROW                      |
|----------------------------|
| This is an example         |
SQL Server에서의 트랜잭션과 오류 처리

연습해 봅시다!

SQL Server에서의 트랜잭션과 오류 처리

Preparing Video For Download...