SQL server 2000 - @@ERROR
SQL server 2005 & later - Try...Catch
1. SQL server 2000
RAISERROR('Error Message', ErrorSeverity, ErrorState)
에러 만들기
Severity level = 16 (사용자가 수정할 수 있는 일반적인 오류를 나타냄 Indicates general errors that can be corrected by the user)
0~25 의 숫자로 심각도를 설정 가능함,,,
0~18 일반적
19~25 WITH LOG옵션이 필요함
20이상 부터는 치명적인 오류로 간주함
State = Number between 1 & 255. RAISERROR 는 0 ~ 255 정수만 사용할 수 있음.
@@ERROR가 정상작동이 되었다면 0이 된다.
@@ERROR returns a NON-ZERO value, if there is an error, otherwise ZERO, indicating that the previous SQL statement encountered no errors.
위의 성질로 확인하는 예시
Declare @Error int
Insert into tblProduct values(2, 'Mobile Phone', 1500, 100)
Set @Error = @@ERROR
Select * from tblProduct
if(@Error <> 0)
print 'Error Occured'
Else
Print 'No Errors'
메모 : @@에러는 각 명령문마다 리셋되기 때문에 관리를 하려면 각 실행되는 명령문 뒤에서 확인하거나 지역 변수에 저장시켜서 관리한다.
Note : @@Error is cleared and reset on each statement execution. Check it immediately following the statement being verified, or save it to a local variable that can be checked later.
2. SQL Server 2005 & Later
BEGIN TRY
{ Any set of SQL statements }
END TRY
BEGIN CATCH
[ Optional : Any set of SQL statements ]
END CATCH
[Optional : Any other SQL Statements]
--System Functions to retrieve Error information:
ERROR_NUMBER()
ERROR_MESSAGE()
ERROR_PROCEDURE()
ERROR_STATE()
ERROR_SEVERITY()
ERROR_LINE()
어떤 Exception이 일어날 수 있는 어떤 set SQL 명령문은 TRY BEGIN 과 TRY END사이에 묶인다. TRY 블럭에 에러가 있으면 즉시 Catch블럭으로 이동한다. 아무일도 안일어나면 Catch 블럭 다음의 명령이 실행된다.(파이선 Catch try로 생각하면 됨)
Any set of sql statements, That can possibly throw an exception are wrapped between begin try and end try blocks. If there is an exception in the TRY block, the control immediately, jumps to the Catch block. If there is no exception, Catch block will be skipped, and the statements, after the catch block are executed.
'Database > SQL Server' 카테고리의 다른 글
SQL Server - 서브 쿼리 Subqueries, 상관 서브 쿼리 Correlated sub query (0) | 2020.12.09 |
---|---|
SQL Server - 트랜잭션 (Transaction) (0) | 2020.12.09 |
SQL Server - 피벗 오퍼레이터 (PIVOT Operator) (0) | 2020.12.09 |
SQL Server - 정규화, 1~3 정규형 [1NF, 2NF, 3NF] (0) | 2020.12.08 |
SQL Server - 데이터베이스 정규화 Database normalization (0) | 2020.12.08 |