У меня есть большое количество пакетов Oracle. Я хотел бы написать запрос, который позволяет мне создать список того, где в этих пакетах можно найти несколько общих проблем.Как я могу получить DDL для «открытых» процедур пакета Oracle?
То, что я пытался до сих пор
- Я знаю, что могу выделить аргументы пакета, запрашивая
dba_arguments
- Я знаю, что могу найти строки кода, запрашивая
dba_source
- Я знаю, что могу идентифицировать процедуры, которые появляются в спецификации пакета, путем запроса
DBA_Procedures
Я могу присоединиться к первым двум наборам результатов вместе, но у меня возникли проблемы с присоединением к третьему набору результатов.
Как я могу получить DDL для процедур, которые появляются в спецификации данного пакета?
dba_source это только строки кода, как они были в исходном файле, в то время как другие являются результатом compliation. Я думаю, что у вас будет большое затруднение с их присоединением, потому что вам в основном нужно скомпилировать источник, чтобы узнать имя и аргументы процедуры. –
Не уверен, что я понимаю вопрос. Пожалуйста, покажите пример того, о чем вы говорите. Благодаря,. – OldProgrammer
Зависит от того, что вы называете общедоступным (например, ссылаетесь на публичные синонимы или только на спецификацию пакета). В общем случае, если у вас есть SELECT_CATALOG_ROLE, вы можете вызвать функцию dbms_metadata.get_ddl. –