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. SQL Server(T-SQL)でデータベースメールアカウントを削除する

    2. MySQL#1093-FROM句で更新するターゲットテーブル「giveaways」を指定できません

    3. ニージャーク待機統計:PAGEIOLATCH_SH

    4. Oracle regexp_replaceによってスペースで区切られたリストから重複を削除するにはどうすればよいですか?