RAISERROR()의 구문 의미는 무엇입니까?
다음과 같은 구문을 가진 Reason After Trigger를 방금 만들었습니다.
Create trigger tgrInsteadTrigger on copytableto
Instead of Insert as
Declare @store_name varchar(30);
declare @sales int;
declare @date datetime;
select @store_name = i.store_name from inserted i
select @sales = i.sales from inserted i
select @date = i.Date from inserted i
begin
if (@sales > 1000)
begin
RAISERROR('Cannot Insert where salary > 1000',16,1); ROLLBACK;
end
else
begin
insert into copytablefrom(store_name, sales, date) values (@store_name, @sales, @date);
Print 'Instead After Trigger Executed';
end
End
위의 구문에서 나는 사용했습니다.RAISERROR('Cannot Insert where salary > 1000',16,1)
하지만 내가 글을 쓸 때RAISERROR('Cannot Insert where salary > 1000')
같은 줄에 "Incorrect syntax near '"""라는 오류가 표시됩니다.
여기서 (16,1)의 사용에 대해 설명할 수 있는 사람이 있습니까?
의 심각도 수준입니다.error
레벨은 11~20 사이이며 오류가 발생합니다.SQL
레벨이 높을수록 레벨과 레벨이 더 심합니다.transaction
중단해야 합니다.
다음 작업을 수행할 때 구문 오류가 발생합니다.
RAISERROR('Cannot Insert where salary > 1000').
정확하게 지정하지 않았기 때문입니다.parameters
(severity level
또는state
).
경고를 발령하고 싶지 않은 경우exception
수준 0 - 10을 사용합니다.
MSDN에서:
엄한
이 메시지와 관련된 사용자 정의 심각도 수준입니다.msg_id를 사용하여 sp_addmessage를 사용하여 생성된 사용자 정의 메시지를 발생시킬 때 RAISERROR에 지정된 심각도가 sp_addmessage에 지정된 심각도를 재정의합니다.0에서 18 사이의 심각도 수준은 모든 사용자가 지정할 수 있습니다.19 - 25 사이의 심각도 수준은 sysadmin 고정 서버 역할의 구성원 또는 ALTER TRACE 권한을 가진 사용자만 지정할 수 있습니다.19 - 25 사이의 심각도 수준의 경우 WITH LOG 옵션이 필요합니다.
주
0에서 255까지의 정수입니다.음수 값 또는 255보다 큰 값은 오류를 생성합니다.여러 위치에서 동일한 사용자 정의 오류가 발생하는 경우 각 위치에 대해 고유한 상태 번호를 사용하면 오류가 발생하는 코드 섹션을 찾는 데 도움이 될 수 있습니다.자세한 설명은 여기를 참조하십시오.
16은 심각도이고 1은 상태입니다. 보다 구체적으로 다음 예를 통해 구문 및 사용에 대한 자세한 내용을 알 수 있습니다.
BEGIN TRY
-- RAISERROR with severity 11-19 will cause execution to
-- jump to the CATCH block.
RAISERROR ('Error raised in TRY block.', -- Message text.
16, -- Severity.
1 -- State.
);
END TRY
BEGIN CATCH
DECLARE @ErrorMessage NVARCHAR(4000);
DECLARE @ErrorSeverity INT;
DECLARE @ErrorState INT;
SELECT
@ErrorMessage = ERROR_MESSAGE(),
@ErrorSeverity = ERROR_SEVERITY(),
@ErrorState = ERROR_STATE();
-- Use RAISERROR inside the CATCH block to return error
-- information about the original error that caused
-- execution to jump to the CATCH block.
RAISERROR (@ErrorMessage, -- Message text.
@ErrorSeverity, -- Severity.
@ErrorState -- State.
);
END CATCH;
http://msdn.microsoft.com/en-us/library/ms178592.aspx 에서 더 많은 예제를 팔로우하고 사용해 볼 수 있습니다.
MSDN에 따르면
RAISERROR ( { msg_id | msg_str | @local_variable }
{ ,severity ,state }
[ ,argument [ ,...n ] ] )
[ WITH option [ ,...n ] ]
16
심각할 것입니다.
1
국가가 될 것입니다.
필요한 매개 변수를 올바르게 제공하지 않았기 때문에 발생하는 오류입니다.RAISEERROR
기능.
예제 코드의 심각도 수준 16은 일반적으로 사용자 정의(사용자 탐지) 오류에 사용됩니다.SQL Server DBMS 자체는 탐지된 문제에 대해 심각도 수준(및 오류 메시지)을 더 높음(더 높음)과 더 낮음(더 낮음)으로 내보냅니다.
상태는 0과 255 사이의 정수여야 하지만(음의 값은 오류를 제공) 기본적으로 프로그래머의 것입니다.사용자 정의 오류에 대한 동일한 오류 메시지가 다른 위치에서 발생하는 경우(예: 오류 발생 위치를 추가로 표시하여 문제의 디버깅/문제 해결에 도움이 되는 경우) 다른 상태 값을 입력하는 것이 유용합니다.
Microsoft의 MSDN에서 가져온 예로 이 질문에 게시된 답변은 좋지만 TRY 블록에서 오류가 발생하지 않는 경우 오류가 어디서 발생하는지 직접적으로 보여주지는 않습니다.저는 CATCH 블록에서 오류가 발생했다는 CATCH 블록 내 RAISERROR 메시지에 대한 매우 사소한 업데이트가 있는 이 예를 선호합니다.저는 이것을 gif에서도 보여줍니다.
BEGIN TRY
/* RAISERROR with severity 11-19 will cause execution
| to jump to the CATCH block.
*/
RAISERROR ('Error raised in TRY block.', -- Message text.
5, -- Severity. /* Severity Levels Less Than 11 do not jump to the CATCH block */
1 -- State.
);
END TRY
BEGIN CATCH
DECLARE @ErrorMessage NVARCHAR(4000);
DECLARE @ErrorSeverity INT;
DECLARE @ErrorState INT;
SELECT
@ErrorMessage = ERROR_MESSAGE(),
@ErrorSeverity = ERROR_SEVERITY(),
@ErrorState = ERROR_STATE();
/* Use RAISERROR inside the CATCH block to return error
| information about the original error that caused
| execution to jump to the CATCH block
*/
RAISERROR ('Caught Error in Catch', --@ErrorMessage, /* Message text */
@ErrorSeverity, /* Severity */
@ErrorState /* State */
);
END CATCH;
언급URL : https://stackoverflow.com/questions/16170073/what-is-the-syntax-meaning-of-raiserror
'it-source' 카테고리의 다른 글
Git를 사용하여 여러 작업 디렉토리를 가질 수 있는 방법은 무엇입니까? (0) | 2023.07.05 |
---|---|
sql developer를 이용한 대용량 데이터 내보내기 방법 - Oracle (0) | 2023.07.05 |
R의 "던지기"와 동등한 값 (0) | 2023.07.05 |
vuex에서 API에서 데이터를 가져오는 방법 (0) | 2023.07.05 |
'완화' 설정내장된 Tomcat에 대한 QueryChars' (0) | 2023.07.05 |