1

我在下面有一小段代码..我无法插入 error_log 表 ORA_ERR_TAG$ 列。如果我删除变量 v_errblk 那么它工作正常。如何实现标签中的变量信息。

 Declare
     v_errblk NUMBER (2):= 0;
    BEGIN
    v_errblk := 1;
    update....;
    Commit;
    v_errblk := 2;
    update ....
    commit;
    v_errblk = 3;
    insert into test3
    Select * FROM   test1
      WHERE  EXISTS (SELECT 1 FROM   test2 WHERE  test1.Abc = test2.abc)
     LOG ERRORS ('ERROR BETWEEN BLOCK:' || v_errblk || 'AND' || v_errblk + 1||'') REJECT LIMIT UNLIMITED;

    END;
4

1 回答 1

1

v_errblk + 1这里伤害你。我最初认为这是LOG ERRORS表达式的限制,但是如果您尝试像这样简单的事情,它将失败并显示ORA-01722: invalid number

select '1 + 2 = ' || 1 + 2 from dual

尝试将括号括起来v_errblk + 1

LOG ERRORS ('ERROR BETWEEN BLOCK:' || v_errblk || 'AND' || (v_errblk + 1))

另外,我会摆脱尾随的|| ''. 这不是必需的。

于 2013-03-29T21:27:49.720 回答