sql >> Databáze >  >> RDS >> Oracle

Vyhledejte daný řetězec ve všech polích celého schématu pro Oracle

"ALL_TAB_COLUMNS " je systable, mají všechny sloupce tabulky datový typ atd.

"USER_TAB_COLUMNS " je systable, mají všechny sloupce tabulky datový typ atd. (který vlastník je aktuální uživatel). (Díky Rene)

Příklad:

 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;
    /

tento dotaz vypíše název_tabulky '' název_sloupce'' a počet, pokud máte standardní názvy sloupců a tabulek, můžete dotaz změnit jako sloupce IF> 0, poté napsat dotaz UNION ve smyčce a vrátit kurzor nebo vrátit tabulku,



  1. Podporuje jarní spouštěcí aplikace OpenJDK

  2. Pokud je hodnota aktualizace null, sloupec neaktualizujte

  3. Jak nastavit výchozí úroveň izolace db aplikace Ruby on Rails 4+

  4. Python MySQLdb iteruje tabulkou