Ответ 1
Я не уверен, понимаю ли вы вас, но чтобы запросить исходный код ваших триггеров, процедур, пакетов и функций, которые вы можете попробовать с помощью таблицы "user_source".
select * from user_source
Мне нужно написать несколько sql, которые позволят мне запрашивать все объекты в нашей базе данных Oracle. К сожалению, инструменты, которые нам разрешено использовать, не имеют этого встроенного. В принципе, мне нужно искать все таблицы, процедуры, триггеры, представления, все.
Я знаю, как искать имена объектов. Но мне нужно искать содержимое объекта. т.е. SELECT * FROM DBA_OBJECTS WHERE object_name = '% search string%';
Спасибо, Гленн
Я не уверен, понимаю ли вы вас, но чтобы запросить исходный код ваших триггеров, процедур, пакетов и функций, которые вы можете попробовать с помощью таблицы "user_source".
select * from user_source
Я не уверен, что я вполне понимаю вопрос, но если вы хотите искать объекты в базе данных для определенной строки поиска, попробуйте:
SELECT owner, name, type, line, text
FROM dba_source
WHERE instr(UPPER(text), UPPER(:srch_str)) > 0;
Оттуда, если вам нужна дополнительная информация, вы можете просто просмотреть номер объекта/линии.
Я бы использовал DBA_SOURCE (если у вас есть к нему доступ), потому что если требуемый объект не принадлежит схеме, под которой вы вошли в систему, вы ее не увидите.
Если вам нужно знать функции и Procs внутри пакетов, попробуйте что-то вроде этого:
select * from all_source
where type = 'PACKAGE'
and (upper(text) like '%FUNCTION%' or upper(text) like '%PROCEDURE%')
and owner != 'SYS';
Последняя строка предотвращает возврат всех файлов sys (DBMS_ и др.). Это будет работать в user_source, если вы просто хотите использовать свой собственный материал схемы.
ALL_SOURCE описывает текстовый источник сохраненных объектов, доступных для текущего пользователя.
Вот одно из решений
select * from ALL_SOURCE where text like '%some string%';