Oracle: перечислить все таблицы в базе данных с column_value = '% value%' для указанного диапазона дат c? - PullRequest
0 голосов
/ 31 марта 2020

Мне нужно перечислить все таблицы в базе данных, где конкретный сотрудник внес изменения в записи. Я ищу запрос в oracle, чтобы перечислить все таблицы, в которых столбец employee_name = 'person_name' и для date> 'sample_date'. Это возможно ?

1 Ответ

0 голосов
/ 31 марта 2020

Как вы сказали - Dynami c SQL помогает. Например, на основе примера схемы Скотта я ищу таблицу, содержащую столбцы ENAME и HIREDATE с желаемыми значениями (SCOTT и 09.12.1982 (дд.мм.гггг)).

SQL> set serveroutput on
SQL>
SQL> DECLARE
  2    l_str VARCHAR2(500);
  3    l_cnt NUMBER := 0;
  4  BEGIN
  5    FOR cur_r IN (SELECT t.table_name, u1.column_name col1, u2.column_name col2
  6                  FROM user_tables t join user_tab_columns u1 on u1.table_name = t.table_name
  7                                     join user_tab_columns u2 on u2.table_name = t.table_name
  8                  WHERE u1.column_name = 'ENAME'
  9                    AND u2.column_name = 'HIREDATE'
 10                 )
 11    LOOP
 12      l_str := 'SELECT COUNT(*) FROM ' || cur_r.table_name   ||
 13              ' WHERE ' || cur_r.col1  || ' = ''SCOTT'''     ||
 14              '   AND ' || cur_r.col2  || ' = date ''1982-12-09''';
 15
 16      EXECUTE IMMEDIATE (l_str) INTO l_cnt;
 17
 18      IF l_cnt > 0 THEN
 19        dbms_output.put_line(l_cnt ||' row(s) in ' || cur_r.table_name);
 20      END IF;
 21    END LOOP;
 22  END;
 23  /
1 row(s) in EMP

PL/SQL procedure successfully completed.

SQL>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...