Oracle
 sql >> база данни >  >> RDS >> Oracle

Търсене на даден низ във всички полета на цяла схема за Oracle

"ALL_TAB_COLUMNS " е система, има всички колони на таблицата тип данни и т.н.

"USER_TAB_COLUMNS " е systable, има всички колони на таблицата тип данни и т.н. (чийто собственик е текущият потребител). (Благодаря, Рене)

Пример:

 SET SERVEROUTPUT ON SIZE 100000 -- maybe you have a lot of table and columns

    DECLARE
      matches INTEGER;
    BEGIN
      FOR columns IN (SELECT table_name, column_name FROM user_tab_columns where data_type = 'VARCHAR2') LOOP

        EXECUTE IMMEDIATE
          'SELECT COUNT(*) FROM '||t.table_name||' WHERE instr('||t.column_name||' , :1) > 0'
          INTO matches
          USING 'What you search';

        IF matches > 0 THEN
          dbms_output.put_line( t.table_name ||' '||t.column_name||' '||matches );
        END IF;

      END LOOP;

    END;
    /

тази заявка ще изведе table_name '' column_name'' и ще преброи, ако имате стандартни имена на колони и таблици, можете да промените заявката като IF колони> 0, след това напишете заявка UNION в цикъл и върнете курсора или върнете таблица,



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Прекъсване на PL/SQL програма

  2. Датата на проверка на PL/SQL е валидна

  3. SQL заявка за връщане на ред, дори ако не е намерен, с поне параметри

  4. Мога ли да направя атомно MERGE в Oracle?

  5. СЪЗДАВАНЕ НА ТАБЛИЦА В ПРОЦЕДУРАТА