在 Oracle 存储过程中搜索文本

Posted

技术标签:

【中文标题】在 Oracle 存储过程中搜索文本【英文标题】:Searching for Text within Oracle Stored Procedures 【发布时间】:2011-06-29 08:40:03 【问题描述】:

我需要使用 TOAD 搜索 Oracle 数据库中的所有存储过程。我正在寻找开发人员在序列上使用 MAX + 1 而不是 NEXTVAL 来获取下一个 ID 号的任何地方。

我多年来一直在使用 SQL Server,并且知道在那里做这件事的几种方法,但在这里没有一个对我有帮助。

我尝试过使用

SELECT * FROM user_source
WHERE UPPER(text) LIKE '%blah%'

返回结果,但仅限于我的默认架构,而不是我需要搜索的架构。

我也尝试了以下方法,但它只是错误

SELECT * FROM SchemaName.user_source
WHERE UPPER(text) LIKE '%blah%'

【问题讨论】:

【参考方案1】:
 SELECT * FROM ALL_source WHERE UPPER(text) LIKE '%BLAH%'

编辑添加附加信息:

 SELECT * FROM DBA_source WHERE UPPER(text) LIKE '%BLAH%'

不同的是 dba_source 将拥有所有存储对象的文本。 All_source 将包含执行查询的用户可访问的所有存储对象的文本。 Oracle Database Reference 11g Release 2 (11.2)

另一个区别是您可能无权访问 dba_source。

【讨论】:

你摇滚!非常感谢香农! 如果您想将搜索限制为特定架构,您可以添加 AND OWNER = 'SCHEMA OWNER NAME'。【参考方案2】:

如果您使用UPPER(text)like '%lah%' 将始终返回零结果。使用'%LAH%'

【讨论】:

【参考方案3】:

我总是像UPPER('%blah%') 一样使用UPPER(text)

【讨论】:

要批评另一个答案,请使用评论。 (需要 50 声望,您可以通过发布有用的答案和问题来获得声望。)

以上是关于在 Oracle 存储过程中搜索文本的主要内容,如果未能解决你的问题,请参考以下文章

Oracle 存储过程在 Informatica 存储过程转换映射中的会话结束时运行

Oracle:搜索所有存储的过程/触发器/其他数据库代码?

将文本文件导入 Oracle 的存储过程

Oracle 存储过程搜索

通过将表名作为参数传递,使用 oracle 中的存储过程从表中搜索数据

带有可能缺少某些搜索条件的查询的 Oracle 存储过程