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

पैकेज विनिर्देश में फ़ंक्शन घोषित किए बिना पैकेज में SQL क्वेरी में किसी फ़ंक्शन को कॉल करते समय त्रुटि प्राप्त करना

आगे की घोषणा से कोई लेना-देना नहीं है।

यह इस तथ्य से संबंधित है कि आप फ़ंक्शन को कॉल करने के लिए SQL क्वेरी का उपयोग कर रहे हैं . ऐसा लगता है कि किसी फ़ंक्शन को लागू करने के लिए कथन का उपयोग करते समय, आप अब PL/SQL पैकेज के दायरे में नहीं हैं, इस प्रकार आप केवल सार्वजनिक रूप से उपलब्ध फ़ंक्शंस को कॉल कर सकते हैं।

क्यों , मैं केवल अनुमान लगा सकता हूं, इसलिए इसे अनुमति के रूप में न लें, लेकिन PL/SQL और SQL के अलग-अलग इंजन हैं . इसलिए, अपने pl/sql पैकेज के अंदर भी एक sql क्वेरी करते समय, आप SQL के स्तर पर जाते हैं जहाँ यह SQL इंजन के अनुसार अनुमतियों की फिर से जाँच करेगा। इसलिए यह नहीं पता कि इसे पीएल/एसक्यूएल पैकेज के भीतर से निष्पादित किया गया है और आपको निजी फ़ंक्शन को कॉल करने की अनुमति दी जानी चाहिए।

मुझे लगता है कि इंजन के अंतर को आसानी से जांचा जा सकता है, 32000 के वर्चर 2 का उपयोग करने का प्रयास करें, यह आपके पीएल/एसक्यूएल फ़ंक्शन के भीतर काम करेगा। अब, यदि आप अपने pl/sql फ़ंक्शन को varchar2(32000) returning लौटाते हुए कॉल करते हैं , यह विफल हो जाएगा। यह एक ऐसी समस्या है जिसका मैं सामना कर चुका हूं, लेकिन आपके पास स्निपेट देने के लिए मेरे पास कोई डेटाबेस नहीं है।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. धाराओं को पूल को मूर्ख मत बनने दो

  2. विंडोज़ 'http:/.127.0.0.1:%HTTPPORT%/apex/f?p=4950' नहीं ढूँढ सकता। सुनिश्चित करें कि आपने नाम सही लिखा है, और फिर पुन:प्रयास करें

  3. Oracle OleDb कनेक्शन खोलना सफल होता है, जबकि प्रबंधित ड्राइवर कनेक्शन विफल रहता है

  4. Oracle संग्रहीत कार्यविधि में त्रुटि

  5. अनुदान कोई भी ट्रिगर बनाएं बनाम अनुदान ट्रिगर बनाएं