sql >> Databasteknik >  >> RDS >> Oracle

PL / SQL för att söka efter en sträng i hela databasen

Varför PL/SQL ? Du kan göra samma sak i SQL med xmlsequence .

Till exempel vill jag söka efter värdet 'KING' -

SQL> variable val varchar2(10)
SQL> exec :val := 'KING'

PL/SQL procedure successfully completed.

SQL> SELECT DISTINCT SUBSTR (:val, 1, 11) "Searchword",
  2    SUBSTR (table_name, 1, 14) "Table",
  3    SUBSTR (column_name, 1, 14) "Column"
  4  FROM cols,
  5    TABLE (xmlsequence (dbms_xmlgen.getxmltype ('select '
  6    || column_name
  7    || ' from '
  8    || table_name
  9    || ' where upper('
 10    || column_name
 11    || ') like upper(''%'
 12    || :val
 13    || '%'')' ).extract ('ROWSET/ROW/*') ) ) t
 14  ORDER BY "Table"
 15  /

Searchword  Table          Column
----------- -------------- --------------
KING        EMP            ENAME

SQL>

Du kan söka efter alla datatypvärden, läs SQL för att söka efter ett VÄRDE i alla kolumner av alla TABELLER i ett helt SCHEMA




  1. Få datumskillnad

  2. Hur hittar man alla tabeller som har främmande nycklar som refererar till en viss table.column och har värden för dessa främmande nycklar?

  3. mysqli förberedd sats num_rows funktion

  4. Extrahera tecken till höger om ett avgränsat värde i en SELECT-sats