2011-03-25 10 views
7

मैं संग्रहित प्रक्रियाओं के सैकड़ों है औरकैसे Oracle 11g में कॉलम नाम का उपयोग करके संग्रहीत प्रक्रिया के नाम खोजने के लिए

+0

एक संग्रहीत प्रक्रिया में कॉलम –

+1

नहीं हैं, इसका मतलब संग्रहीत प्रक्रिया के अंदर कुछ है: COLUMN का चयन करें ... ताकि आपको अपना -1 लेना चाहिए। –

उत्तर

5

यह कर देगा मैं प्रक्रिया है जिससे क्वेरी में विशेष स्तंभ नाम का उपयोग करता का नाम पता लगाना चाहते हैं है, लेकिन सामान्य स्तंभ नाम

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

के लिए झूठे सकारात्मक उत्पादन हो सकता है, जहां स्वामी स्कीमा जो संग्रहित प्रक्रियाओं आप खोज करना चाहते का मालिक है और COLUMN_NAME स्तंभ नाम है कि आप को खोजने के लिए चाहते हैं। आप मिश्रित मामले स्तंभ नाम का उपयोग नहीं करते हैं तो आप

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

साथ अंतिम पंक्ति को बदलने और एक केस संवेदी खोज पाने के लिए की राजधानियों में स्तंभ नाम दर्ज कर सकते हैं।

+0

मैंने आपके कोड की कोशिश की और नीचे त्रुटि मिली 1 ओआरए -00 9 42: त्रुटि या तालिका मौजूद नहीं है। मैं ओरेकल 11 जी – Vani

+2

का उपयोग कर रहा हूं मुझे लगता है कि आपके पास dba_source तक पहुंच नहीं है। इसके बजाय all_source का उपयोग करें। – Lunc

+0

धन्यवाद !!! यह gr8 काम कर रहा है !! – Vani

1

कोई गारंटीकृत तरीका नहीं है, लेकिन आप पूरे शब्द की जांच के लिए regexp_like का उपयोग करके उपयोगकर्ता/सभी/dba_source खोज सकते हैं, और क्रॉस-रेफरेंस जो उपयोगकर्ता/सभी/dba_dependencies के साथ जांचने के लिए संकुलों की सूची को कम करने के लिए कर सकते हैं।

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

या कोई अन्य स्कीमा से यह करने के लिए संदर्भ हो सकता है अगर,

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

आप यह सिर्फ select distinct s.owner, s.name, s.type ... का उपयोग की वस्तुओं की जांच के लिए की एक सूची प्राप्त करने के लिए कर सकता है।

संबंधित मुद्दे