我在存储过程里,有N条insert执行语句我想如果存储过程出异常的时候,记录下上一句执行SQL。也就是出异常的那条sql语句,谁知道怎么得到的

解决方案 »

  1.   

    将这条SQL先放在一个变量里, 每执行一条新的SQL语句时, 就重新赋值此SQL
    declare
    v_sql varchar2(200);
    begin
      for i in 1..N loop
        v_sql := 'insert into test values('||i||')';
      end loop;
      exception
      when xxx then
        dbms_output.put_line('发生异常的SQL:'v_sql);
    end;
      

  2.   


    这个方法我知道,就是太烦了,我好多SQL呢
    有没有什么更好的办法
      

  3.   


    -- 将存储过程里面要执行的SQL语句在每次执行之前存放到一个变量中!
    -- 当出现异常时,按照楼上的方法,打印出来即可!