sql >> Database teknologi >  >> RDS >> Oracle

Sådan finder du navnet på den lagrede procedure ved hjælp af kolonnenavn i Oracle 11g

Der er ingen garanteret måde, men du kan søge user/all/dba_source ved hjælp af regexp_like for at tjekke for hele ord, og krydshenvise det med user/all/dba_dependencies for at indsnævre listen over pakker, der skal kontrolleres.

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 hvis der kunne være referencer til det fra andre skemaer,

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 få det til bare at bruge select distinct s.owner, s.name, s.type ... for at få en liste over objekter, der skal undersøges.




  1. Sådan flettes 2 eller flere datointerval til 1

  2. MySQL slutter mange til mange enkelt række

  3. Hvordan hash adgangskoder i MySQL?

  4. Slet - jeg kan ikke angive måltabel?