Простой вопрос, но поиск в Google и SO ничего не дал.
Кто-нибудь знает, можно ли выполнить поиск в словаре данных Oracle, чтобы найти все завернутые (которые были запутаны с помощью утилиты «wrap») пакеты/процедуры?
Спасибо, Джон.
Простой вопрос, но поиск в Google и SO ничего не дал.
Кто-нибудь знает, можно ли выполнить поиск в словаре данных Oracle, чтобы найти все завернутые (которые были запутаны с помощью утилиты «wrap») пакеты/процедуры?
Спасибо, Джон.
Вы должны проверить первую строку исходного кода:
select type, owner, name
from all_source
where line = 1
and instr(text, 'wrapped') > 1;
За исключением очень длинных обернутых пакетов, обернутые типы обычно имеют весь код в одной строке (строка 1), в то время как развернутые типы имеют отдельную строку для каждой строки исходного кода.
Поиск текста 'wrapped' в строке 1 с использованием all_source/user_source показывает завернутые объекты. Но это может сломаться, если само имя юнита содержит текст «обернутый», вместо этого вы можете использовать:
select u.object_name
from sys.procedure$ p, user_objects u
where u.object_id = obj#
AND bitand(p.options, 2) <> 0;
Полное представление объекта базы данных:
select d.owner,
d.object_name,
case bitand(p.options, 2)
when 0 then
'PLAIN'
else
'WRAPPED'
end wrapped
from sys.procedure$ p, dba_objects d
where d.object_id = obj#
and d.owner = USER;