sql >> データベース >  >> RDS >> Oracle

選択結果をOracleプロシージャの変数に格納する方法

    いくつかのオプションがあります。そのクエリをカーソルに変えることができます:

    DECLARE
         CURSOR v_employeeRecords IS
              SELECT * FROM Employee WHERE Salary > 10;
         v_employeeRecord  employee%ROWTYPE;
    BEGIN
         FOR v_employeeRecord IN v_employeeRecords LOOP
              /* Do something with v_employeeRecord */
         END LOOP;
    END;
    

    または、TABLEを作成することもできます 変数:

    DECLARE
         v_employeeRecord  employee%ROWTYPE;
         v_employeeRecords IS TABLE OF employee%ROWTYPE;
         i BINARY_INTEGER;
    BEGIN
     SELECT * BULK COLLECT INTO v_employeeRecords
          FROM Employee WHERE Salary > 10;
    
     i := v_employeeRecords.FIRST;
     WHILE v_employeeRecords.EXISTS(i) LOOP
         v_employeeRecord := v_employeeRecords(i);
         /* Do something with v_employeeRecord */
         i := v_employeeRecords.NEXT(i);
     END;
    END;
    

    Oracleでこれらのサンプルを試したことがないため、コンパイラエラーが発生する可能性があります...



    1. MySQLの行を削除するにはクエリを削除します

    2. DBMS_STANDARDパッケージのプロシージャや関数をPL/SQLコードで使用する必要がありますか?

    3. PLS-00352およびPLS-00201DBリンク経由

    4. 修正方法「WITHRESULTSETS句で結果セットに2列が指定されたため、EXECUTEステートメントが失敗しました…」SQLServerのメッセージ11537