Nếu thủ tục PL / SQL biên dịch, bất kỳ bảng nào được tham chiếu trực tiếp phải tồn tại. Tôi cho rằng đó là SQL động. Nếu bạn đang sử dụng DBMS_SQL, thì bạn có thể sử dụng LAST_ERROR_POSITION . Nếu bạn đang sử dụng THỰC HIỆN NGAY LẬP TỨC và bạn có SQL của mình trong một biến tiện dụng, thì hãy yêu cầu mã của bạn thực hiện một số việc như:
begin
execute immediate v_sql;
exception
when others then
declare
v_cur BINARY_INTEGER;
begin
v_cur := dbms_sql.open_cursor;
dbms_sql.parse (v_cur, v_sql, dbms_sql.native);
exception
when others then
dbms_output.put_line (sqlerrm || ' near pos ' ||
substr(v_sql,dbms_sql.last_error_position -10,40));
dbms_sql.close_cursor (v_cur);
raise;
end;
end;