Jeg har ingen idé om, hvad du præcist vil opnå, men måske kan du prøve at bruge pakken DBMS_SQL
og dets metode PARSE
. Dette virker kun med DML kun udsagn. Dette er, hvad Oracle SQL Developer gør.
Denne parser kan også bruges til DML-sætninger. For PL/SQL vil det have brug for nogle justeringer. Så vidt jeg ved, har ingen brugt tid nok til at skabe en ægte fuldt validerende parser til Oracles DDL.
Her er et eksempel på, hvordan jeg bruger det:
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;
Udfør blot denne blok. Send én inputparameter af typen VARCHAR2(String) (maks. 32KB) og én outputparameter NUMBER.