Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

Kursor PL/SQL untuk loop

*1. Anda memerlukan SELECT dan titik koma dalam definisi kursor

*2. Anda dapat menambahkan FOR LOOP di atas kursor

Misalnya:

    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;

Sebagai alternatif, Anda dapat menghindari definisi kursor eksplisit sepenuhnya, mis.:

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

*3. Pernyataan IF Anda tidak boleh menyertakan titik koma - mis.:

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

*4. [edit] jadi Anda ingin memperbarui tabel Anda, kolom newstreetnumber dan newstreetname - dalam hal ini Anda dapat melakukan sesuatu seperti ini:

    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;

Namun, perhatikan bahwa ini tidak akan bekerja dengan baik untuk volume besar, dan saya lebih suka melakukan semuanya dalam satu pernyataan UPDATE.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. ORA-12704:ketidakcocokan set karakter

  2. Ubah datetime lokal (dengan zona waktu) ke stempel waktu Unix di Oracle

  3. Memilih Nilai dari Variabel / Array Tabel Oracle?

  4. 1000000 hingga 1M dan 1000 hingga 1K dalam permintaan oracle

  5. Pisahkan teks kolom menjadi baris (ekstrak pembatas dalam tanda kurung) ORACLE SQL