java-如何获取错误在Oracle SQL查询中的位置?

如何获取查询中错误的位置?

我需要在导致错误的查询字符串中获取位置,例如sqlplus会这样做:

SQL> insert into tbl (data) values('12345')
  2  /
insert into tbl (data) values('12345')
                 *
ERROR at line 1:
ORA-12899: value too large for column "schmnm"."tbl"."data" (actual: 5,
maximum: 3)

我怎样才能做到这一点?

解决方法:

当我几乎失去希望时,经过一番漫长的闲逛,我发现了(感谢Google中正确的搜索字符串)以下链接:https://forums.oracle.com/thread/1000551

SQL> DECLARE
  2     c   INTEGER := DBMS_SQL.open_cursor ();
  3  BEGIN
  4     DBMS_SQL.parse (c, 'select * form dual', DBMS_SQL.native);
  5
  6     DBMS_SQL.close_cursor (c);
  7  EXCEPTION
  8     WHEN OTHERS THEN
  9        DBMS_OUTPUT.put_line ('Last Error: ' || DBMS_SQL.LAST_ERROR_POSITION ());
 10        DBMS_SQL.close_cursor (c);
 11        RAISE;
 12  END;
 13  /
Last Error: 9
DECLARE
*
ERROR at line 1:
ORA-00923: FROM keyword not found where expected
ORA-06512: at line 11
上一篇:python-从SQLAlchemy执行PL / SQL函数(或过程)


下一篇:Oracle plsql存储过程中out模式参数的用法