sql >> Database >  >> RDS >> Oracle

Definieer voorwaardelijk een cursor

je hebt een REF-CURSOR nodig en deze voorwaardelijk openen, bijvoorbeeld:

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. oracle 12c - selecteer string na het laatste voorkomen van een karakter

  2. Hoe VARCHAR(MAX) afdrukken met Print Statement?

  3. Incrementele gegevensreplicatie in IRI Workbench

  4. Het automatiseren van de tabellarische modelverwerking van Analysis Services (SSAS)-databases in SQL Server