Как определить, к какой схеме или процедуре, таблице и столбцу относится конкретное значение? - PullRequest
0 голосов
/ 20 февраля 2019

У меня есть 9-значное число, скажем «234234234», есть ли способ найти или проверить его появление в моей базе данных, например, в какую конкретную схему или процедуру он попадает?и перечислите все таблицы и столбцы, которые имеют это значение в pl / sql developer

Ответы [ 2 ]

0 голосов
/ 20 февраля 2019

Блок ниже определяет присутствие данной строки во всех таблицах в вашей БД.

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;
/
0 голосов
/ 20 февраля 2019

Этот запрос выполняет поиск только в сохраненных объектах, доступ к которым разрешен пользователю (процедура, функция, пакет, ...).Вы можете сослаться на this

Не уверен, есть ли один способ поиска этого значения во всей таблице базы данных.

SELECT * 
FROM all_source
WHERE text LIKE '%234234234%';
    --AND owner = 'SCHEMA_NAME';
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...