如何查找特定值属于哪个架构或过程,表和列?

时间:2019-02-20 03:05:29

标签: sql oracle plsql

我有一个9位数字,例如“ 234234234”,有没有办法查找或检查它在数据库中的外观,例如它属于哪个特定的模式或过程?并列出在pl / sql开发人员

中具有该值的所有表和列

2 个答案:

答案 0 :(得分:1)

此查询仅搜索允许用户访问的存储对象(过程,函数,包等)。您可以参考this

不确定是否有一种方法可以在所有数据库表中搜索该值。

[{u'class': [u'table-main__odds'],
  u'data-odd': u'3.46',
  u'data-odd-max': u'3.90'},
 {u'class': [u'table-main__odds', u'colored']},
 {u'class': [u'table-main__odds'],
  u'data-odd': u'3.58',
  u'data-odd-max': u'3.92'},
 {u'class': [u'table-main__odds', u'colored']}]

答案 1 :(得分:0)

下面的块标识了数据库中所有表中给定字符串的存在。

declare
    num_rows number;
    sql_text varchar2(250);
    sql_info varchar2(100);
begin
    dbms_output.enable(1000000);
    for x in (select table_name, column_name from dba_tab_columns
               where data_type in ('VARCHAR','VARCHAR2','CHAR')
                 and owner <> 'SYSTEM')
    loop
         sql_text:='select count(*) into :num_rows from SYSTEM.'||x.table_name||' where '||x.column_name||' like ''%234234234%''';
         -- dbms_output.put_line (sql_text);
         execute immediate sql_text into num_rows;
         if num_rows>0 
         then 
              sql_info:='Table: '||x.table_name||' contains the string';
              dbms_output.put_line (sql_info);
         end if;
    end loop;
end;
/