问大家个oracle 存储过程的事情 我在一个存储过程里
写了这样一条语句
update vehicle_main set tolltodate=v_NewTime where vehicleid=v_vehicleid;
if sql%notfound then
raise exception_cannotExec;
end if;
.....
commit;
EXCEPTION
WHEN OTHERS THEN
BEGIN
INTRESULT:=0;
ROLLBACK;
END;v_NewTime(date) 和v_vehicleid (int) 都是变量
exception_cannotExec; 自定义异常
执行的时候这两个值都是正确的
但是 有的时候看结果这个语句就是没有执行。。
也不报异常
下面的语句都执行成功了
但重新执行一边又好了。
写了这样一条语句
update vehicle_main set tolltodate=v_NewTime where vehicleid=v_vehicleid;
if sql%notfound then
raise exception_cannotExec;
end if;
.....
commit;
EXCEPTION
WHEN OTHERS THEN
BEGIN
INTRESULT:=0;
ROLLBACK;
END;v_NewTime(date) 和v_vehicleid (int) 都是变量
exception_cannotExec; 自定义异常
执行的时候这两个值都是正确的
但是 有的时候看结果这个语句就是没有执行。。
也不报异常
下面的语句都执行成功了
但重新执行一边又好了。
也不报异常 EXCEPTION
WHEN OTHERS THEN
BEGIN
INTRESULT:=0;
ROLLBACK;
lz
你的最外层的异常处理是rollback啊,而且不提示。所以:
就是你看到的情况拉
WHEN OTHERS THEN
BEGIN
INTRESULT:=0;
ROLLBACK;
dbms_output.put_line('遇到未知错误!!');
END;
exc_1 EXCEPTION;
BEGIN
aa:=1;
IF aa=1 THEN
RAISE exc_1;
END IF;
aa:=2;
IF aa=1 THEN
RAISE exc_1;
END IF;
COMMIT;
EXCEPTION
WHEN exc_1 THEN
DBMS_OUTPUT.PUT_LINE('1');
WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE('other');
ROLLBACK;
END;--
结果
1
这个 我也用过。 不过他不会走到这一步不会走到 Exception 因为在前边没有抛出过异常
--
是否是别的地方的问题啊
exc_1 EXCEPTION;
BEGIN
aa:=1;
IF aa=1 THEN
RAISE exc_1;
END IF;
aa:=2;
IF aa=1 THEN
RAISE exc_1;
END IF;
COMMIT;
EXCEPTION
WHEN exc_1 THEN
DBMS_OUTPUT.PUT_LINE('1');
aa:=2;
DBMS_OUTPUT.PUT_LINE(aa);
ROLLBACK;
WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE('other');
ROLLBACK;
END;--
结果
1
2