답변:
두 가지 옵션이 있습니다.
숫자로 직접 예외를 참조하십시오.
BEGIN
EXECUTE IMMEDIATE 'CREATE SEQUENCE S_TEST START WITH 1 INCREMENT BY 1';
EXCEPTION
WHEN OTHERS THEN
IF SQLCODE = -955 THEN
NULL; -- suppresses ORA-00955 exception
ELSE
RAISE;
END IF;
END;
다른 옵션은 EXCEPTION_INIT
Pragma 지시문 을 사용 하여 알려진 Oracle 오류 번호를 사용자 정의 예외에 바인딩하는 것입니다.
DECLARE
name_in_use exception; --declare a user defined exception
pragma exception_init( name_in_use, -955 ); --bind the error code to the above
BEGIN
EXECUTE IMMEDIATE 'CREATE SEQUENCE S_TEST START WITH 1 INCREMENT BY 1';
EXCEPTION
when name_in_use then
null; --suppress ORA-00955 exception
END;
BTW 오류 코드 만 제공하여 오류를 포착하는 구문이 있습니까?
예, 첫 번째 예에서 시연했습니다
이에 대한 자세한 내용은 다음을 참조하십시오.
sqlcode
955 아닙니다) =
Sathya가 이미 제안한 것과 유사하지만 when others
가능한 경우 완전히 피하고 싶습니다 . 처리되지 않은 예외는 일반적으로 특별히 처리하지 않는 예외에 대한 올바른 결과입니다.
create sequence foo;
/*
sequence FOO created.
*/
declare
name_is_already_used_955 exception;
pragma exception_init(name_is_already_used_955,-955);
begin
execute immediate 'create sequence foo';
exception when name_is_already_used_955 then null;
end;
/
/*
anonymous block completed
*/