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

चयन में उपयोग के लिए पैक किए गए फ़ंक्शन से संग्रह लौटाएं

आप या तो अपने पैकेज के अंदर SQL ऑब्जेक्ट्स का उपयोग कर सकते हैं या पाइपलाइन किए गए फ़ंक्शंस (10gr2 के साथ परीक्षण) का उपयोग कर सकते हैं। SQL ऑब्जेक्ट का उपयोग करना सीधा है, आपके वास्तविक फ़ंक्शन का उपयोग पैकेज के अंदर किया जा सकता है।

यहां बताया गया है कि आप रिकॉर्ड प्रकार के साथ पाइपलाइन किए गए फ़ंक्शन का उपयोग कैसे कर सकते हैं:

SQL> CREATE OR REPLACE PACKAGE my_pkg IS
  2     TYPE t_col IS RECORD(
  3        i NUMBER,
  4        n VARCHAR2(30));
  5     TYPE t_nested_table IS TABLE OF t_col;
  6     FUNCTION return_table RETURN t_nested_table PIPELINED;
  7  END my_pkg;
  8  /

Package created
SQL> CREATE OR REPLACE PACKAGE BODY my_pkg IS
  2     FUNCTION return_table RETURN t_nested_table PIPELINED IS
  3        l_row t_col;
  4     BEGIN
  5        l_row.i := 1;
  6        l_row.n := 'one';
  7        PIPE ROW(l_row);
  8        l_row.i := 2;
  9        l_row.n := 'two';
 10        PIPE ROW(l_row);
 11        RETURN;
 12     END;
 13  END my_pkg;
 14  /

Package body created

SQL> select * from table(my_pkg.return_table);

         I N
---------- ------------------------------
         1 one
         2 two

दृश्य के पीछे क्या होता है कि Oracle समझता है कि चूंकि आप एक क्वेरी में अपने फ़ंक्शन का उपयोग करना चाहते हैं (PIPELINED कीवर्ड के कारण), आपको SQL ऑब्जेक्ट की आवश्यकता होगी, इसलिए वे ऑब्जेक्ट आपके लिए दृश्य के पीछे बनाए गए हैं:

SQL> select object_name
  2    from user_objects o
  3   where o.created > sysdate - 1
  4     and object_type = 'TYPE';

OBJECT_NAME
--------------------------------------------------------------------------------
SYS_PLSQL_798806_24_1
SYS_PLSQL_798806_DUMMY_1
SYS_PLSQL_798806_9_1

SQL> select text from user_source where name='SYS_PLSQL_798806_9_1';

TEXT
--------------------------------------------------------------------------------
type        SYS_PLSQL_798806_9_1 as object (I NUMBER,
N VARCHAR2(30));


  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 डेटा पंप impdp

  2. हाइबरनेट का उपयोग करके Oracle में बड़े BLOBs (>100MB) को कैसे बनाए रखें?

  3. Rownum कथन इसके बिना की तुलना में भिन्न पंक्ति देता है

  4. LONG डेटाटाइप Oracle का अवैध उपयोग

  5. Oracle DB के लिए SQL क्वेरी में डेटटाइम पैरामीटर कैसे पास करें?