Ich habe keine Ahnung, was genau Sie erreichen wollen, aber vielleicht versuchen Sie, das Paket DBMS_SQL
zu verwenden und seine Methode PARSE
. Dies funktioniert nur mit DML nur Aussagen. Das macht Oracle SQL Developer.
Dieser Parser kann auch für DML-Anweisungen verwendet werden. Für PL/SQL sind einige Anpassungen erforderlich. Soweit ich weiß, hat niemand genug Zeit darauf verwendet, einen wirklich vollständig validierenden Parser für Oracles DDL zu erstellen.
Hier ist ein Beispiel, wie ich es verwende:
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;
Führen Sie einfach diesen Block aus. Übergeben Sie einen Eingabeparameter vom Typ VARCHAR2(String) (max. 32 KB) und einen Ausgabeparameter NUMBER.