Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Warunkowo zdefiniuj kursor

będziesz potrzebował KURSORA REF i otwórz go warunkowo, na przykład:

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. Przeszukaj wszystkie pola we wszystkich tabelach pod kątem określonej wartości (Oracle)

  2. Samouczek Oracle sql:Ograniczanie zbioru danych

  3. Jak zadeklarować parametry wejścia-wyjścia w procedurze/funkcji przechowywanej w programie SQL Server?

  4. Tworzenie lub symulacja dwuwymiarowych tablic w PL/SQL

  5. utwórz niestandardową funkcję dla różnicy dat z wyłączeniem weekendów i świąt w Oracle sql