Java – How to get position of an error in Oracle SQL query

java, jdbc, oracle, plsql

How can I get position of an error in the query?

I need to get position in a query string which causes an error, like sqlplus does it:

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)

How can I do that?

Best Solution

After some ramblings when I almost lost hope, I found (thanks to correct search string in Google) following link:

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: 9DECLARE*ERROR at line 1:ORA-00923: FROM keyword not found where expectedORA-06512: at line 11