nasıl

2011-03-25 25 views
7

ben saklı prosedürler yüzlerce venasıl

+0

Bir saklı yordamın sütunları –

+1

sütununda saklı yordamının içinde saklı yordamın olduğu anlamına gelir: COLUMN öğesini seçin ... böylece -1'inizi almanız gerekir. –

cevap

5

Bu yapacağım ben sorguda özellikle sütun adını kullanan prosedürün ismini öğrenmek istiyorum sAHİBİ aramak istediğiniz saklı prosedürler sahibi olan şema ve sütunu bulmak istediğiniz sütun adıdır ancak jenerik sütun adları

SELECT DISTINCT type, name 
FROM dba_source 
WHERE owner = 'OWNER' 
AND text LIKE '%COLUMN_NAME%'; 

için yanlış pozitif üretebilir. Eğer karışık durumda sütun adları kullanmazsanız o zaman

AND UPPER(text) LIKE '%COLUMN_NAME%'; 

ile son satırı değiştirin ve büyüklük duyarsız arama almak için başkentlerinde sütun adını girebilirsiniz.

+0

Ur kodunu denedim ve aşağıdaki hatayı aldım Hata 1 ORA-00942 adresinde: tablo veya görünüm mevcut değil. Oracle 11g kullanıyorum – Vani

+2

Ben dba_source erişiminiz yok sanırım. Bunun yerine all_source kullanın. – Lunc

+0

Teşekkürler! Bu gr8 çalışıyor! .. – Vani

1

Hiçbir garanti yolu yoktur, ancak tüm kelimeleri kontrol etmek için regexp_like numaralı telefonu kullanarak kullanıcı/all/dba_source'ı ve kontrol edilecek paketlerin listesini daraltmak için kullanıcı/all/dba_dependencies değerini çapraz referans olarak arayabilirsiniz.

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

veya başka şemalar dan kendisine referanslar olabilir eğer

,

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

Bunun sadece araştırmak için nesnelerin listesini almak için select distinct s.owner, s.name, s.type ... kullanmak neden olabilir.