Non ho idea di cosa vuoi ottenere esattamente, ma forse potresti provare a usare il pacchetto DBMS_SQL
ed è il metodo PARSE
. Funziona solo con DML solo dichiarazioni. Questo è ciò che fa Oracle SQL Developer.
Questo parser potrebbe essere utilizzato anche per le istruzioni DML. Per PL/SQL avrà bisogno di alcune modifiche. Per quanto ne so nessuno ha impiegato abbastanza tempo per creare un vero parser completamente validante per il DDL di Oracle.
Qui è un esempio di come 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;
Esegui semplicemente questo blocco. Passa un parametro di input di tipo VARCHAR2(String) (max 32KB) e un parametro di output NUMBER.