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

कर्सर पैरामीटर के साथ पाइपलाइन फ़ंक्शन oracle

कर्सर एक पॉइंटर होता है जिसका उपयोग परिणाम सेट से पंक्तियों को लाने के लिए किया जाता है।

तो, जब आप table(test_pipe(main_cur)) . करते हैं , आप एक पंक्ति स्रोत . पास नहीं कर रहे हैं पाइपलाइन फ़ंक्शन . के लिए . आपको पहले पंक्तियों को लाना होगा और फिर पंक्ति स्रोत को पास करना होगा।

टेस्ट केस:

SQL> CREATE or replace TYPE target_table_row
  2  AS
  3    OBJECT
  4    ( EMPNO NUMBER(4) ,
  5      ENAME VARCHAR2(10)
  6      )
  7  /

Type created.

SQL>
SQL> sho err
No errors.
SQL>
SQL> CREATE or replace TYPE target_table_rows
  2  AS
  3    TABLE OF target_table_row;
  4  /

Type created.

SQL>
SQL> sho err
No errors.
SQL>

पाइपलाइन फ़ंक्शन

SQL> CREATE OR REPLACE FUNCTION pipelined_fx(
  2      p_cursor IN SYS_REFCURSOR)
  3    RETURN target_table_rows PIPELINED PARALLEL_ENABLE(
  4      PARTITION p_cursor BY ANY)
  5  IS
  6  TYPE cursor_ntt
  7  IS
  8    TABLE OF emp%ROWTYPE;
  9    nt_src_data cursor_ntt;
 10  BEGIN
 11    LOOP
 12      FETCH p_cursor BULK COLLECT INTO nt_src_data LIMIT 100;
 13      FOR i IN 1 .. nt_src_data.COUNT
 14      LOOP
 15        PIPE ROW (target_table_row( nt_src_data(i).empno, nt_src_data(i).ename ));
 16      END LOOP;
 17      EXIT
 18    WHEN p_cursor%NOTFOUND;
 19    END LOOP;
 20    CLOSE p_cursor;
 21    RETURN;
 22  END pipelined_fx;
 23  /

Function created.

SQL>
SQL> show errors
No errors.
SQL>

अब, आइए पाइपलाइन फ़ंक्शन का परीक्षण करें :

SQL> DECLARE
  2    rc SYS_REFCURSOR;
  3    num NUMBER;
  4  BEGIN
  5    OPEN RC FOR SELECT * FROM emp;
  6    SELECT count(*) INTO num FROM TABLE(pipelined_fx(rc));
  7    DBMS_OUTPUT.PUT_LINE( num || ' rows in total.' );
  8  END;
  9  /
14 rows in total.

PL/SQL procedure successfully completed.

SQL>


  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. Oracle क्रैश या हैंग के लिए टॉड के बाद SQL संपादक फ़ाइलें (प्रश्न, प्रक्रिया) पुनर्प्राप्त करना

  3. एसक्यूएल (ओरेकल) में लहजे की अनदेखी स्ट्रिंग्स की तुलना करें

  4. Oracle में सभी टेबल इंडेक्स को अक्षम और बाद में सक्षम करें

  5. तालिका में डुप्लिकेट को हटाने के लिए SQL