Нямам представа какво точно искате да постигнете, но може би ще опитате да използвате пакета DBMS_SQL
и това е метод PARSE
. Това работи само с DML само изявления. Това прави Oracle SQL Developer.
Този парсер може да се използва и за DML изрази. За PL/SQL ще има нужда от някои настройки. Доколкото знам, никой не е отделил достатъчно време, за да създаде истински напълно валидиращ парсер за DDL на Oracle.
Тук е пример как го използвам:
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;
Просто изпълнете този блок. Подайте един входен параметър от тип VARCHAR2(String) (макс. 32KB) и един изходен параметър NUMBER.