【问题标题】:SQL to search objects, including stored procedures, in OracleSQL 在 Oracle 中搜索对象,包括存储过程
【发布时间】:2010-10-25 14:38:18
【问题描述】:

我需要编写一些 sql 来查询 Oracle 数据库中的所有对象。不幸的是,我们被允许使用的工具没有内置此功能。 基本上,我需要搜索所有表、过程、触发器、视图,以及所有内容。

我知道如何搜索对象名称。但我需要搜索对象的内容。 即 SELECT * FROM DBA_OBJECTS WHERE object_name = '%search string%';

谢谢, 格伦

【问题讨论】:

标签: sql oracle search full-text-search


【解决方案1】:

我不确定我是否完全理解这个问题,但如果您想在数据库中搜索特定搜索字符串的对象,请尝试:

SELECT owner, name, type, line, text 
FROM dba_source
WHERE instr(UPPER(text), UPPER(:srch_str)) > 0;

如果您需要更多信息,可以从那里查找对象/行号。

对于您可以使用的视图:

SELECT *
FROM dba_views
WHERE instr(UPPER(text_vc), UPPER(:srch_str)) > 0

【讨论】:

  • 使用SELECT owner, name, type FROM dba_source WHERE instr(UPPER(name), UPPER(':srch_strg')) > 0; 仅搜索名称.. 可能对某些人更实用
  • 这种方法很棒,因为您可以过滤对象的“类型”。 (WHERE type = 'PROCEDURE') 如果需要.. 如果您知道它是一个过程或可能是一个函数(例如...),则可以避免遍历所有其他类型(例如...)
  • @IEnjoyEatingVegetables 我已经编辑了答案以包含可用于搜索视图的数据字典视图
【解决方案2】:

我不确定我是否理解您,但要查询您的触发器、过程、包和函数的源代码,您可以尝试使用“user_source”表。

select * from user_source

【讨论】:

    【解决方案3】:

    我会使用 DBA_SOURCE(如果您可以访问它),因为如果您需要的对象不属于您登录的架构,您将看不到它。

    如果您需要了解包中的函数和 Procs,请尝试以下操作:

    select * from all_source
     where type = 'PACKAGE'
       and (upper(text) like '%FUNCTION%' or upper(text) like '%PROCEDURE%')
       and owner != 'SYS';
    

    最后一行阻止返回所有 sys 内容(DBMS_ 等)。如果您只想要自己的架构内容,这将在 user_source 中工作。

    【讨论】:

    • [PLUS ONE] 这简直拯救了我的一天!
    • [PLUS ONE] 因为您不需要管理员权限
    【解决方案4】:

    我在尝试查找使用某个表的所有过程时遇到了这个问题

    Oracle SQL Developer 提供此功能,如本文所述:https://www.thatjeffsmith.com/archive/2012/09/search-and-browse-database-objects-with-oracle-sql-developer/

    从视图菜单中,选择查找数据库对象。选择一个数据库连接。输入表的名称。在对象类型中,只保留函数、过程和包。在代码部分,检查所有源代码行。

    【讨论】:

      【解决方案5】:

      ALL_SOURCE 描述当前用户可访问的存储对象的文本源。

      这是解决方案之一

      select * from ALL_SOURCE where text like '%some string%';
      

      【讨论】:

        【解决方案6】:

        在 Oracle 11g 中,如果您想在整个数据库或过程中搜索任何文本,可以使用下面提到的查询:

        select * from user_source WHERE UPPER(text) LIKE '%YOUR SAGE%'

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2018-07-07
          • 2011-06-29
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-06-03
          • 2013-01-20
          相关资源
          最近更新 更多