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;
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;
你有两个选择:
直接按编号引用异常:
其他选项是使用
EXCEPTION_INIT
Pragma 指令将已知的 Oracle 错误号绑定到用户定义的异常;是的,我已经在第一个例子中演示过了
进一步阅读这方面的变化:
类似于 Sathya 已经提出的建议,但
when others
如果可能的话,我希望完全避免 - 对于您没有专门处理的异常,未处理的异常通常是正确的结果: