新人求教oracle如何判断语句执行超时
假设有个A表被锁住了。
我有语句是这样的:
DECLARE
c INT;
BEGIN
SELECT c_1 INTO c FROM A FOR UPDATE WAIT 10;
IF SQLCODE <> 0 THEN
dbms_output.put_line('超时啦!');
END IF;
END;
我是想判断到是否超时,但是实际执行的时候是直接报错的,不会输出“超时”文本。
请问这个如何实现?
其实就是想处理并发时的一个返回。
------解决方案--------------------出异常了,捕获异常。根据异常代码来处理
DECLARE
c INT;
BEGIN
SELECT c_1 INTO c FROM A FOR UPDATE WAIT 1;
EXCEPTION
WHEN others THEN
dbms_output.put_line(SUBSTR(SQLERRM, 1, 120));
dbms_output.put_line(SQLCODE);
dbms_output.put_line('超时啦!');
--END IF;
END;
------解决方案--------------------
begin
insert into t1 values(...);
exception
when others then
...
end;
begin
insert into t2 values(...);
exception
when others then
...
end;