在 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 存储过程转换映射中的会话结束时运行