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

पैकेज परिभाषा के अंदर Oracle उपयोगकर्ता परिभाषित प्रकार

नहीं, इसकी अनुमति नहीं है:

SQL> CREATE OR REPLACE PACKAGE AF_CONTRACT AS  -- spec
   -- PROCEDURE my_rpcedure (emp_id NUMBER);
   TYPE DTO_GRID AS OBJECT
   (
     ROWKEY    NVARCHAR2(200),
     COLUMNKEY NVARCHAR2(200),
     CELLVALUE NVARCHAR2(200),
     OLDVALUE  NVARCHAR2(200),
     TAG       NVARCHAR2(200)
   );
END AF_CONTRACT;
/
  2    3    4    5    6    7    8    9   10   11   12

Warning: Package created with compilation errors.

SQL> SQL> sho err
Errors for PACKAGE AF_CONTRACT:

LINE/COL ERROR
-------- -----------------------------------------------------------------
3/4      PLS-00540: object not supported in this context.
SQL>

यदि आप एक ऐसा प्रकार बनाना चाहते हैं जो पीएल/एसक्यूएल प्रक्रियाओं के बीच डेटा पास कर रहा है तो पीएल/एसक्यूएल रिकॉर्ड सिंटैक्स का उपयोग करें:

SQL> CREATE OR REPLACE PACKAGE AF_CONTRACT AS  -- spec
   -- PROCEDURE my_rpcedure (emp_id NUMBER);
   TYPE DTO_GRID IS RECORD
   (
     ROWKEY    NVARCHAR2(200),
     COLUMNKEY NVARCHAR2(200),
     CELLVALUE NVARCHAR2(200),
     OLDVALUE  NVARCHAR2(200),
     TAG       NVARCHAR2(200)
   );
END AF_CONTRACT;
/
  2    3    4    5    6    7    8    9   10   11   12
Package created.

SQL>

हालाँकि, यदि आप एक प्रकार चाहते हैं जिसे आप SQL कथन में उपयोग कर सकते हैं - अर्थात, TABLE() के इनपुट के रूप में फ़ंक्शन - आपको इसे SQL प्रकार के रूप में बनाना होगा। SQL और PL/SQL दो अलग-अलग इंजनों का उपयोग करते हैं, और SQL इंजन को केवल SQL प्रकार दिखाई देते हैं।

SQL प्रकार की आवश्यकता के बारे में मेरी सलाह अब Oracle के बाद के संस्करणों के लिए सही नहीं है। निश्चित रूप से 11gR2 और 12c में SQL इंजन PL/SQL पैकेज में SQL का समर्थन करेगा जो TABLE() में PL/SQL तालिकाओं का उपयोग करता है। खंड। प्रकारों को पैकेज स्पेक में घोषित किया जाना है, इसलिए सार्वजनिक और SQL इंजन के लिए दृश्यमान। कवर के तहत Oracle प्रत्येक घोषणा के लिए SQL प्रकार उत्पन्न करता है। आप इन प्रकारों को खोज सकते हैं क्योंकि उनके नाम SYS_PLSQL_ start से शुरू होते हैं इसके बाद संख्यात्मक पहचानकर्ता हैं।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. क्वेरी रिटर्निंग:ORA-01427 सिंगल-पंक्ति सबक्वेरी एक से अधिक पंक्तियों को लौटाती है

  2. Oracle पर पदानुक्रम स्तर और सभी नोड संदर्भ प्राप्त करें

  3. रेगेक्सपी में (*) और .* में क्या अंतर है?

  4. मैं एक संग्रहीत प्रक्रिया कैसे लिखूं जो किसी अन्य संग्रहीत प्रक्रिया से रेफ कर्सर में कॉलम जोड़ता है?

  5. डेटपिकर ओरेकल एपेक्स पर डायनामिक एक्शन का उपयोग करके तिथियों की तुलना करना