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

PL/SQLカーソルforループ

    *1。カーソル定義にSELECTとセミコロンが必要です

    *2。カーソルの上にFORLOOPを追加できます

    例:

        DECLARE
          cursor c1 is
            SELECT street1
            from test_data;
          r1 c1%ROWTYPE;
        BEGIN
          FOR r1 IN c1 LOOP
             ... do your stuff with r1.street1
          END LOOP;
        END;
    

    または、明示的なカーソル定義を完全に回避することもできます(例:

    )。
    FOR r1 IN (SELECT street1 FROM test_data) LOOP
       ... do your stuff with r1.street1
    END LOOP;
    

    *3。 IFステートメントにセミコロンを含めることはできません-例:

        If
        Instr(r1.street1, 'Cnr', 1) >= 1
        Then
    

    *4。 [編集]テーブル、列newstreetnumberを更新したい およびnewstreetname -その場合、次のようなことができます:

        DECLARE
          cursor c1 is
            SELECT street1
            from test_data
            FOR UPDATE;
          r1 c1%ROWTYPE;
        BEGIN
          FOR r1 IN c1 LOOP
             ... do your stuff with r1.street1
             UPDATE test_data
             SET newstreetnumber = ...
                ,newstreetname = ...
             WHERE CURRENT OF c1;
          END LOOP;
        END;
    

    ただし、これは大量の場合はうまく機能しないことに注意してください。すべてを1つのUPDATEステートメントで実行することをお勧めします。



    1. Oracle結合からAnsi結合への変換

    2. データベースのリストの取得は、選択したサーバーによって異なります

    3. 一致および反対のMysql全文検索

    4. MySQLで2つの日付の差の日数を取得するにはどうすればよいですか?