Oracle
 sql >> डेटाबेस >  >> RDS >> Oracle

मुझे PLS-00302 क्यों मिलता है:घटक मौजूद होने पर घोषित किया जाना चाहिए?

आप उस त्रुटि को प्राप्त कर सकते हैं यदि आपके पास स्कीमा के समान नाम वाला ऑब्जेक्ट है। उदाहरण के लिए:

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


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. ODP.NET Oracle.ManagedDataAccess फ़ाइल के ORA-12537 नेटवर्क सत्र के अंत का कारण बनता है

  2. लॉन्ग को Varchar2 में कनवर्ट करना

  3. Oracle का varchar क्रम क्रम varchar तुलना के व्यवहार से मेल क्यों नहीं खाता है?

  4. प्रति उपयोगकर्ता डिफ़ॉल्ट योजना Oracle सेटिंग (एक सत्र में परिवर्तन नहीं)

  5. Oracle दिनांक के साथ टाइमस्टैम्प की तुलना करता है