No tengo idea de qué es exactamente lo que quieres lograr, pero tal vez podrías intentar usar el paquete DBMS_SQL
y su método PARSE
. Esto funciona solo con DML declaraciones solamente. Esto es lo que hace Oracle SQL Developer.
Este analizador también se puede usar para declaraciones DML. Para PL/SQL necesitará algunos ajustes. Que yo sepa, nadie dedicó el tiempo suficiente para crear un analizador real de validación completa para el DDL de Oracle.
Aquí es un ejemplo de cómo lo uso:
declare
l_cursor number := dbms_sql.open_cursor;
l_offset number := -1 ;
begin
begin
dbms_sql.parse( l_cursor, :st, dbms_sql.native );
exception when others then
l_offset := dbms_sql.last_error_position;
end;
dbms_sql.close_cursor( l_cursor );
:off := l_offset;
end;
Simplemente ejecute este bloque. Pase un parámetro de entrada de tipo VARCHAR2(String) (máx. 32 KB) y un parámetro de salida NÚMERO.