Процедура "SYS"."GET_PROCEDURE_OBJECTS"
не документирована для общего пользования.
Но мне удалось успешно вызвать его из контекста сценария SQL:
Иметь определение процедуры:
create procedure pr_test (in i int)
as
begin
declare a, b int;
select :i into a from dummy;
select count(*) into b from objects;
select :a, :b, :a*:b from dummy;
end;
call pr_test(10);
Назначить этоИсходный код переменной CLOB
и вызов системной процедуры с этой переменной:
do begin
declare proc_source clob;
proc_source :='create procedure pr_test (in i int)
as
begin
declare a, b int;
select :i into a from dummy;
select count(*) into b from objects;
select :a, :b, :a*:b from dummy;
end;';
CALL SYS.GET_PROCEDURE_OBJECTS(:proc_source);
end;
Получить результат процедуры из системного представления PROCEDURE_OBJECTS
:
select * from procedure_objects;
SCHEMA_NAME PROCEDURE_NAME OBJECT_SCHEMA OBJECT_NAME OBJECT_TYPE_ID OBJECT_TYPE START_POSITION END_POSITION
SYSTEM PR_TEST PUBLIC DUMMY 128 SYNONYM 100 105
SYSTEM PR_TEST SYS DUMMY 32 TABLE 100 105
SYSTEM PR_TEST PUBLIC OBJECTS 128 SYNONYM 141 148
SYSTEM PR_TEST SYS OBJECTS 31 VIEW 141 148
SYSTEM PR_TEST PUBLIC DUMMY 128 SYNONYM 189 194
SYSTEM PR_TEST SYS DUMMY 32 TABLE 189 194