declare
xxx
begin
   INSERT INTO A SELECT *FROM B
   commit;   EXCEPTION
   WHEN OTHERS THEN
   v_errcode := SQLCODE;
   v_err_txt := SUBSTR(SQLERRM, 1, 70);
   v_sql_txt :=?
end
有无什么方法在过程中可以获取当前错误的sql语句

解决方案 »

  1.   


    http://www.oracle.com.cn/viewthread.php?tid=102808_______________________________
    DBA请进群QQ群:88039805
      

  2.   


    在oracle alert日志里面可以获取sql报错的行号,这样就知道是哪条sql报错了。
      

  3.   

    在test windows下运行,在用profile跟踪下
      

  4.   

    可以考虑用拼SQL语句字符串赋值给变量,并用execute immediate来执行。
      

  5.   

    declare 
    xxx 
    begin 
      sql='INSERT INTO A SELECT *FROM B ';
       execute immediate sql;
      EXCEPTION 
      WHEN OTHERS THEN 
     str:=sql;
     end 
    应该可以这样捕获出异常的sql把,可以保存在一个异常的table里啊