Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

PL / SQL Cursor cho vòng lặp

* 1. Bạn cần một CHỌN và một dấu chấm phẩy trong định nghĩa con trỏ

* 2. Bạn có thể thêm FOR LOOP qua con trỏ

Ví dụ:

    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;

Ngoài ra, bạn có thể tránh hoàn toàn định nghĩa con trỏ rõ ràng, ví dụ:

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

* 3. Câu lệnh IF của bạn không được bao gồm dấu chấm phẩy - ví dụ:

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

*4. [sửa] nên bạn muốn cập nhật bảng của mình, các cột newstreetnumbernewstreetname - trong trường hợp đó bạn có thể làm điều gì đó như thế này:

    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;

Tuy nhiên, lưu ý rằng điều này sẽ không hoạt động tốt đối với khối lượng lớn và tôi muốn thực hiện tất cả trong một câu lệnh CẬP NHẬT.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Đối sánh hai cột

  2. DeleteDatabase không được hỗ trợ bởi nhà cung cấp, Oracle với Entity Framework

  3. Không gian bảng trong Oracle

  4. chạy tập lệnh sql oracle từ java

  5. Tại sao việc triển khai ODP.NET 11 xcopy không hoạt động trên máy đã cài đặt Oracle DB 10?