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

एक कर्सर को सशर्त रूप से परिभाषित करें

आपको एक REF CURSOR की आवश्यकता होगी और इसे सशर्त रूप से खोलना होगा, उदाहरण के लिए:

SQL> CREATE OR REPLACE PROCEDURE GET_RECORDS(v_action IN VARCHAR2) IS
  2     v_thing     VARCHAR2(10);
  3     get_records SYS_REFCURSOR;
  4  BEGIN
  5     IF (v_action = 'DO THIS') THEN
  6        OPEN get_records FOR
  7           SELECT 1 FROM dual;
  8     ELSE
  9        OPEN get_records FOR
 10           SELECT 2 FROM dual;
 11     END IF;
 12  
 13     LOOP
 14        FETCH get_records INTO v_thing;
 15        EXIT WHEN get_records%NOTFOUND;
 16        /* do things */
 17        dbms_output.put_line(v_thing);
 18     END LOOP;
 19     CLOSE get_records;
 20  END;
 21  /

Procedure created

SQL> exec get_records ('DO THIS');
1

PL/SQL procedure successfully completed

SQL> exec get_records ('DO THAT');
2

PL/SQL procedure successfully completed


  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 क्वेरी में XMLType नोड्स को संयोजित करें

  3. ओरेकल में खाली स्ट्रिंग

  4. oracle - किन कथनों को करने की आवश्यकता है?

  5. PostgreSQL या Oracle में तिथि के अनुसार ऑर्डर कैसे करें