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)