sql >> Database >  >> RDS >> Oracle

Hoe de naam van de opgeslagen procedure te vinden met Kolomnaam in Oracle 11g

Er is geen gegarandeerde manier, maar je kunt user/all/dba_source zoeken met regexp_like om te controleren op hele woorden en daar een kruisverwijzing naar te maken met user/all/dba_dependencies om de lijst met te controleren pakketten te verfijnen.

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' );

of als er verwijzingen naar zouden kunnen zijn vanuit andere schema's,

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' );

Je zou het gewoon kunnen laten gebruiken select distinct s.owner, s.name, s.type ... om een ​​lijst met te onderzoeken objecten te krijgen.




  1. Wat is er nieuw in PostgreSQL 13?

  2. Docker:Combineer meerdere afbeeldingen

  3. Voorkom valtafel als niet aan de voorwaarden wordt voldaan

  4. Hoe kan ik SQL schrijven voor een tabel die dezelfde naam heeft als een beveiligd sleutelwoord in MySql?