Можно ли определить, какие объекты базы данных были созданы с идентификаторами в кавычках в Oracle? - PullRequest
1 голос
/ 14 марта 2012

У меня есть схема, в которой небольшое количество тысяч хранимых процедур было создано с указанными в кавычках идентификаторами.Мне нужно их исправить.Единственный способ, которым я в настоящее время могу их идентифицировать, - это открывать их в SQLDeveloper, по одному, и проверять, есть ли бит CREATE OR REPLACE... вверху, заключенный в кавычки вокруг имени процедуры.У кого-нибудь есть какой-нибудь хитрый способ более легко идентифицировать эти проблемные объекты?Возможно, я пропустил какое-то системное представление Oracle с флагом this_uses_quoted_identifiers?Пожалуйста, просветите меня!

Ответы [ 2 ]

2 голосов
/ 14 марта 2012

Существует как минимум 2 способа:

select * from all_source where type = 'PROCEDURE' and line = 1 and text like '%"%'

и

select * from all_procedures where procedure_name != upper(procedure_name)

Однако ни один из них не является на 100% правильным и полным.Первый ищет любую двойную кавычку в первой строке.Второй будет искать только процедуры с более низкими заглавными буквами в названии, что будет означать, что используются двойные кавычки.

1 голос
/ 14 марта 2012

Насколько я знаю, если вы цитируете идентификатор, но все буквы в заглавной форме, это просто эквивалент не заключенного в кавычки идентификатора.Таким образом, вы можете выбрать из ALL_OBJECTS, чтобы увидеть, какие имена объектов имеют имена с заглавными буквами.

...