नहीं, यह अनुमति नहीं दी जाती:
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>
आप एक प्रकार है जो सिर्फ PL/SQL प्रक्रियाओं के बीच डेटा गुजर रहा है तो PL/SQL का उपयोग बनाना चाहते हैं RECORD वाक्य रचना:
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 प्रकार के रूप में बनाना होगा। एसक्यूएल और पीएल/एसक्यूएल दो अलग इंजनों का उपयोग करते हैं, और केवल एसक्यूएल प्रकार एसक्यूएल इंजन के लिए दृश्यमान होते हैं।
एसक्यूएल प्रकार की आवश्यकता के बारे में मेरी सलाह अब ओरेकल के बाद के संस्करणों के लिए सच नहीं है। निश्चित रूप से 11 जीआर 2 और 12 सी में एसक्यूएल इंजन पीएल/एसक्यूएल पैकेज में एसक्यूएल का समर्थन करेगा जो TABLE()
खंड में पीएल/एसक्यूएल टेबल का उपयोग करता है। प्रकार पैकेज पैकेज में घोषित किया जाना चाहिए, इसलिए सार्वजनिक और एसक्यूएल इंजन के लिए दृश्यमान। कवर के तहत ओरेकल प्रत्येक घोषणा के लिए एसक्यूएल प्रकार उत्पन्न करता है। आप इन प्रकारों को खोज सकते हैं क्योंकि उनके नाम SYS_PLSQL_
संख्यात्मक पहचानकर्ताओं के बाद शुरू होते हैं।