在存储过程、函数或触发器中,如何禁止Oracle某个或多个异常情态的触发?急
因为在一个包含块中,不管什么地方,只要出现异常,这个块将会立即终止,再也没有办法继续执行了。比如一条:Select ... Into 语句,如果没有找到任何行,则触发一个NO_DATA_FOUND异常,控制自动转到异常处理部分,其后的语句将无法继续执行。这并不是我想要的,我需要在Oracle控制自动跳转到转异常处理之前扑获这个错误,并可在进行处理后继续执行下面的语句,而不跳转到异常处理部分。
给你一个异常处理的例子
DECLARE
v_ErrorCode NUMBER; -- Code for the error
v_ErrorMsg VARCHAR2(200); -- Message text for the error
v_CurrentUser VARCHAR2(8); -- Current database user
v_Information VARCHAR2(100); -- Information about the error
BEGIN
/* Code which processes some data here */
NULL;
EXCEPTION /*例外的处理*/
WHEN OTHERS THEN
-- Assign values to the log variables, using built-in
-- functions.
v_ErrorCode := SQLCODE; /*错误代码*/
v_ErrorMsg := SQLERRM; /*错误信息*/
v_CurrentUser := USER; /*当前用户*/
v_Information := 'Error encountered on ' ||
TO_CHAR(SYSDATE) || ' by database user ' || v_CurrentUser; /*错误信息串*/
-- Insert the log message into log_table.
INSERT INTO log_table (code, message, info) /*保存到log表中*/
VALUES (v_ErrorCode, v_ErrorMsg, v_Information);
END;
/
把它放到必要的位置就可以