多年前留下的文档,基本没用过,试试吧
BEGIN
……
EXCEPTION
WHEN OTHERS THEN
POSITION:=DBMS_SQL.LAST_ERROR_POSITION;--出错位置
SQLCODE:=DBMS_SQL.LAST_SQL_FUNCTION_CODE;--出错语句
LROWID:=DBMS_SQL.LAST_ROW_ID;--出错行 --DBMS_OUTPUT.PUT_LINE(SQLCODE||'---'||SQLERRM); 错误代码及描述
END;
BEGIN
……
EXCEPTION
WHEN OTHERS THEN
POSITION:=DBMS_SQL.LAST_ERROR_POSITION;--出错位置
SQLCODE:=DBMS_SQL.LAST_SQL_FUNCTION_CODE;--出错语句
LROWID:=DBMS_SQL.LAST_ROW_ID;--出错行 --DBMS_OUTPUT.PUT_LINE(SQLCODE||'---'||SQLERRM); 错误代码及描述
END;
create table tab_sql_t (
v_sql varchar2(521)
);create table err_log (
error varchar2(256),
time date
);
create or replace procedure pro_err
is
v_sql varchar2(200);
cursor cur is select v_sql from tab_sql_t;v_errortext varchar2(200);beginopen cur;
fetch cur into v_sql;
while cur%found loop
dbms_output.put_line(v_sql);
execute immediate v_sql;fetch cur into v_sql;
end loop;
close cur;
exception
when others then
v_errortext:=substr(sqlerrm,1,200);
insert into err_log (error,time) values(v_errortext,sysdate);commit;end;select * from err_log;
exception中直接提交问题很大啊