본문으로 건너뛰기

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)