आप उस त्रुटि को प्राप्त कर सकते हैं यदि आपके पास स्कीमा के समान नाम वाला ऑब्जेक्ट है। उदाहरण के लिए:
create sequence s2;
begin
s2.a;
end;
/
ORA-06550: line 2, column 6:
PLS-00302: component 'A' must be declared
ORA-06550: line 2, column 3:
PL/SQL: Statement ignored
जब आप S2.MY_FUNC2
. का संदर्भ लें ऑब्जेक्ट का नाम हल किया जा रहा है, इसलिए यह S2 को स्कीमा नाम के रूप में मूल्यांकन करने का प्रयास नहीं करता है। जब आप इसे केवल MY_FUNC2
. कहते हैं कोई भ्रम नहीं है, इसलिए यह काम करता है।
दस्तावेज़ीकरण नाम समाधान बताता है। क्वालिफाइड ऑब्जेक्ट नाम का पहला टुकड़ा - S2 यहां - एक अलग स्कीमा के रूप में मूल्यांकन करने से पहले वर्तमान स्कीमा पर एक ऑब्जेक्ट के रूप में मूल्यांकन किया जाता है।
यह एक क्रम नहीं हो सकता है; अन्य वस्तुएं एक ही त्रुटि का कारण बन सकती हैं। आप डेटा डिक्शनरी को क्वेरी करके समान नाम वाली वस्तुओं के अस्तित्व की जांच कर सकते हैं।
select owner, object_type, object_name
from all_objects
where object_name = 'S2';