1

我有一个架构,其中使用带引号的标识符创建了数千个存储过程中的一小部分。我需要修复它们。我目前识别它们的唯一方法是在 SQLDeveloper 中打开它们,一次一个,然后检查CREATE OR REPLACE...顶部的位是否在过程名称周围有引号。有没有人有任何巧妙的方法可以更容易地识别这些麻烦的物体?也许我忽略了一些带有this_uses_quoted_identifiers标志的 Oracle 系统视图?请赐教!

4

2 回答 2

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% 正确和完整的。第一个查找第一行中的任何双引号。第二个只会找到名称中带有小写字母的程序,这意味着已使用双引号。

于 2012-03-14T06:22:17.957 回答
1

据我所知,如果你引用一个标识符,但所有字母都是大写形式,它就相当于非引用标识符。因此,您可以从 ALL_OBJECTS 中进行选择,以查看哪些对象名称具有非大写字母的名称。

于 2012-03-14T06:21:47.557 回答