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

डेटाबेस लिंक पर ऑरैकल में एक संग्रहीत फ़ंक्शन को कॉल करना (जो उपयोगकर्ता द्वारा परिभाषित प्रकार की एक सरणी देता है)

जहां तक ​​​​मुझे पता है, आप जो कोशिश कर रहे हैं वह सही वाक्यविन्यास है, लेकिन किसी भी मामले में यह रिटर्न प्रकार के उपयोगकर्ता-परिभाषित होने के कारण काम नहीं करेगा, जैसा कि आपको संदेह है।

यहां एक अंतर्निहित पाइपलाइन फ़ंक्शन के साथ एक उदाहरण दिया गया है। इसे स्थानीय रूप से कॉल करना निश्चित रूप से काम करता है:

SELECT * FROM TABLE(dbms_xplan.display_cursor('a',1,'ALL'));

रिटर्न:

SQL_ID: a, child number: 1 cannot be found 

इसे डेटाबेस लिंक पर कॉल करना:

SELECT * FROM TABLE(example@sqldat.com('a',1,'ALL'));

इस त्रुटि के साथ विफल:

ORA-30626: function/procedure parameters of remote object types are not supported

संभवतः आपको ORA-904 मिल रहा है क्योंकि लिंक एक विशिष्ट स्कीमा पर जाता है जिसकी पैकेज तक पहुंच नहीं है। लेकिन किसी भी मामले में, यह काम नहीं करेगा, भले ही आप अपने स्थानीय स्कीमा में समान नाम के साथ एक समान प्रकार को परिभाषित करें, क्योंकि वे अभी भी Oracle के दृष्टिकोण से एक ही प्रकार के नहीं हैं।

आप निश्चित रूप से किसी दृश्य को दूरस्थ रूप से क्वेरी कर सकते हैं, इसलिए यदि संभावित मापदंडों का एक अच्छी तरह से परिभाषित सेट है, तो आप प्रत्येक पैरामीटर संयोजन के लिए एक दृश्य बना सकते हैं और फिर क्वेरी कर सकते हैं, जैसे:

CREATE VIEW display_cursor_a_1_all AS
  SELECT * FROM TABLE(dbms_xplan.display_cursor('a',1,'ALL'))
  ;

यदि संभावित पैरामीटर मानों की सीमा बहुत बड़ी है, तो आप एक ऐसी प्रक्रिया बना सकते हैं जो पैरामीटर के किसी भी सेट को गतिशील रूप से आवश्यक दृश्य बनाता है। फिर हर बार जब आप क्वेरी निष्पादित करना चाहते हैं तो आपके पास दो-चरणीय प्रक्रिया होती है:

EXECUTE  example@sqldat.com(parameters)

SELECT * FROM example@sqldat.com;

फिर आपको इस बारे में सोचना होगा कि क्या कई सत्र इसे समानांतर में बुला सकते हैं और यदि ऐसा है तो उन्हें एक-दूसरे पर कदम रखने से कैसे रोका जाए।




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Oracle SQL डेवलपर टूल :डाउनलोड और इंस्टालेशन

  2. पीएल/एसक्यूएल भूमिकाओं द्वारा दिए गए विशेषाधिकारों का सम्मान क्यों नहीं करता है?

  3. Oracle ORA-30004 SYS_CONNECT_BY_PATH फ़ंक्शन का उपयोग करते समय,

  4. ORA-12557 TNS:प्रोटोकॉल एडेप्टर लोड करने योग्य नहीं है

  5. पीएल/एसक्यूएल का उपयोग करके मैं एक ब्लॉब में फ़ाइल की सामग्री कैसे प्राप्त करूं?