본문으로 건너뛰기

SQL 프로그래밍(3)

TRY ... CATCH

오류를 처리하는 데 편리하고 강력함 자주 쓰이지는 않지만 가끔 유용할 수 있음

USE sqlDB
BEGIN TRY
INSERT INTO userTbl VALUES('LSH', '이승효', 1997, '서울', NULL, NULL, 170 GETDATE())
PRINT N'정상 입력.'
END TRY

BEGIN CATCH
PRINT N'오류 발생.'
END CATCH

RAISERROR

오류를 강제로 발생시킴

RAISERROR (
{msg_id | msg_str | @local_variable}
{ , severity, state}
[ , argument[ , ...n]]
)
[WITH option [ , ...n]]

-- ex
RAISERROR(N'이건 RAISERROR 오류', 16, 1);

THROW

오류를 강제로 발생시킴 RAISERROR와 달리 이 error_number를 미리 sys.message 카탈로그 뷰에 등록시킬 필요가 없음

THROW [ {error_number | @local_variable }
{ message | @local_variable }
{ state | @local_variable }
][;]

-- ex
THROW 55555, N'이건 THROW 오류 발생', 1;

EXEC(동적 SQL)

변수에 저장된 SQL문장(텍스트 형태)을 실행

use sqlDB
DECLARE @sql VARCHAR(100)
SET @sql = 'SELECT * FROM userTbl WHERE userid = ''LSH'''
EXEC(@sql)