EXCEPTION WHEN OTHERS THEN DBMS_OUTPUT.PUT_LINE( 'xxxxxxxxxx ERROR CODE = [' || SQLCODE || ']' ); RAISE; END;这样就可以进行例外捕获
CREATE TABLE USER_SIP.AA_TEST1 ( FIELD VARCHAR2(20) );CREATE TABLE USER_SIP.AA_TEST ( FIELD VARCHAR2(20) );CREATE OR REPLACE PROCEDURE TEST AS BEGIN INSERT INTO AA_TEST SELECT * FROM AA_TEST1;
EXCEPTION WHEN OTHERS THEN dbms_output.put_line('Error '||TO_CHAR(SQLCODE)||': '||SQLERRM); END; / -- AA_TEST1为空,则执行dbms_output.put_line('Error '||TO_CHAR(SQLCODE)||': '||SQLERRM);
如果没有其他用户访问数据库,单独执行insert into table1 select * from table2 where condition有问题吗
select 是不会有锁等待的。你在sql正在执行的时候,看看这个session 正在等待什么事件。 先确定自己的session ,在执行sql之前,先执行 select sid from v$mystat where rownum=1; 确定自己的sid,等sql执行了以后,启动另一个session ,select * from v$session_wait where sid=刚才你得到的sid,看看这个sql正在等待什么事件,然后在具体分析。
WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE( 'xxxxxxxxxx ERROR CODE = [' || SQLCODE || ']' );
RAISE;
END;这样就可以进行例外捕获
(
FIELD VARCHAR2(20)
);CREATE TABLE USER_SIP.AA_TEST
(
FIELD VARCHAR2(20)
);CREATE OR REPLACE PROCEDURE TEST
AS
BEGIN
INSERT INTO AA_TEST
SELECT *
FROM AA_TEST1;
EXCEPTION
WHEN OTHERS THEN
dbms_output.put_line('Error '||TO_CHAR(SQLCODE)||': '||SQLERRM);
END;
/
-- AA_TEST1为空,则执行dbms_output.put_line('Error '||TO_CHAR(SQLCODE)||': '||SQLERRM);
先确定自己的session ,在执行sql之前,先执行 select sid from v$mystat where rownum=1;
确定自己的sid,等sql执行了以后,启动另一个session ,select * from v$session_wait
where sid=刚才你得到的sid,看看这个sql正在等待什么事件,然后在具体分析。