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

Forループを使用してOracleでカーソルからデータをフェッチする方法

    Oracleでは、Forループがカーソルを操作する最も簡単な方法です。カーソルを開き、フェッチして自動的に閉じます。以下は、Forループを使用してOracleのカーソルからデータをフェッチする方法の例です。

    Forループカーソルの例

    1。パラメータのないカーソル

    SET SERVEROUTPUT ON;
    
    DECLARE
    CURSOR c_emp
    IS
    SELECT * FROM emp;
    BEGIN
    FOR cur IN c_emp
    LOOP
    DBMS_OUTPUT.put_line (
    'Employee Name: ' || cur.ename || ' Job: ' || cur.job);
    END LOOP;
    END;
    /

    出力

    Employee Name: SMITH Job: CLERK
    Employee Name: ALLEN Job: SALESMAN
    Employee Name: WARD Job: SALESMAN
    Employee Name: JONES Job: MANAGER
    Employee Name: MARTIN Job: SALESMAN
    Employee Name: BLAKE Job: MANAGER
    Employee Name: CLARK Job: MANAGER
    Employee Name: SCOTT Job: ANALYST
    Employee Name: KING Job: PRESIDENT
    Employee Name: TURNER Job: SALESMAN
    Employee Name: ADAMS Job: CLERK
    Employee Name: JAMES Job: CLERK
    Employee Name: FORD Job: ANALYST
    Employee Name: MILLER Job: CLERK
    PL/SQL procedure successfully completed.

    2。ループの例のカーソルのパラメータ化

    SET SERVEROUTPUT ON;
    
    DECLARE
    CURSOR c_emp (p_job emp.job%type)
    IS
    SELECT * FROM emp where job = p_job;
    BEGIN
    FOR cur IN c_emp ('MANAGER')
    LOOP
    DBMS_OUTPUT.put_line (
    'Employee Name: ' || cur.ename || ' Job: ' || cur.job);
    END LOOP;
    END;
    /

    出力

    Employee Name: JONES Job: MANAGER
    Employee Name: BLAKE Job: MANAGER
    Employee Name: CLARK Job: MANAGER
    PL/SQL procedure successfully completed.

    関連項目:

    1. カーソルを使用したOracle一括収集の例
    2. エラーが発生した場合でもカーソルをループし続ける
    3. OracleでデータをCSVにエクスポート
    1. SQL ServerでのCOUNT()のしくみ

    2. 1000カットのワークロードによる死の分析

    3. SQLServerフェールオーバークラスターのインストール-2

    4. C#でのストアドプロシージャの出力パラメータの使用