sql >> Databasteknik >  >> RDS >> Oracle

Hur man hittar namnet på den lagrade proceduren med kolumnnamn i Oracle 11g

Det finns inget garanterat sätt, men du kan söka user/all/dba_source med regexp_like för att söka efter hela ord, och korshänvisa det med user/all/dba_dependencies för att begränsa listan över paket att kontrollera.

select s.name, s.type, s.line, s.text
from   user_source s
where  ltrim(s.text,chr(9)||' ') not like '--%'
and    regexp_like(lower(s.text),'\Wyour_column_name_here\W')
and    (s.name, s.type) in
       ( select d.name, d.type
         from   user_dependencies d
         where  d.referenced_owner = user
         and    d.referenced_name = 'YOUR_TABLE_NAME_HERE' );

eller om det kan finnas referenser till det från andra scheman,

select s.owner, s.name, s.type, s.line, s.text
from   all_source s
where  ltrim(s.text,chr(9)||' ') not like '--%'
and    regexp_like(lower(s.text),'\Wyour_column_name_here\W')
and    (s.owner, s.name, s.type) in
       ( select d.owner, d.name, d.type
         from   all_dependencies d
         where  d.referenced_owner = user
         and    d.referenced_name = 'YOUR_TABLE_NAME_HERE' );

Du kan göra det bara att använda select distinct s.owner, s.name, s.type ... för att få en lista över föremål att undersöka.




  1. hämta specialtecken från mysql-databasen, php

  2. mysqldump med utf8 kan inte exportera rätt emojis-sträng

  3. Kan inte avserialisera objekt efter att ha lagrat det serialiserat i databasen

  4. Hantera flera resultat från en lagrad procedur med SqlQuery