sql >> Database >  >> RDS >> Oracle

PL / SQL om een ​​string in de hele database te doorzoeken

Waarom PL/SQL ? Je zou hetzelfde kunnen doen in SQL met behulp van xmlsequence .

Ik wil bijvoorbeeld zoeken naar de waarde '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>

U kunt zoeken naar waarden van elk gegevenstype, lees a.u.b. SQL om te zoeken naar een WAARDE in alle KOLOMMEN van alle TABELLEN in een heel SCHEMA




  1. Hoe een door komma's gescheiden tekenreeks in SQL optellen?

  2. Er is een niet-numeriek teken gevonden waar een numeriek werd verwacht

  3. hoe vervang de geaccentueerde letter in een varchar2-kolom in orakel

  4. Postgres regex-probleem