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

Cách sử dụng SYS_REFCURSUR được chọn để cập nhật trong pl / sql

Một sys_refcursor không thể được sử dụng trong update bản tường trình. Bạn có thể sử dụng một con trỏ rõ ràng như hình dưới đây. Sử dụng theo cách này:

    DECLARE
    cursor a_cursor is
      SELECT mytable.VID
      FROM   mytable
      WHERE  ROWNUM <= COUNT FOR UPDATE;

    a_id number;
    begin
    OPEN a_cursor;
    loop     
      FETCH a_cursor INTO a_id;          
      exit when a_cursor%notfound; 

        UPDATE mytable SET
        ...
        WHERE  VID = a_vid;                   
    end loop;
    COMMIT;
   close a_cursor;
 end;

Chỉnh sửa:

create or replace PROCEDURE get_rows(
                                   a_cursor OUT SYS_REFCURSOR,
                                   a_id IN VARCHAR,
                                   a_count IN NUMBER)
IS                                   
cursor a_cur is
  SELECT mytable.VID
  FROM   mytable
  WHERE  ROWNUM <= a_COUNT ;

a_id NUMBER;
cnumber number;
BEGIN 
OPEN a_cur;

 LOOP
  FETCH a_cur INTO a_id; 

  IF a_cur%notfound THEN
   cnumber := 9999;
  End if;

  exit when a_cursor%notfound; 

    UPDATE mytable SET
     ...
    WHERE  VID = a_vid;
  END loop;
  COMMIT;    
  CLOSE a_cur;

  Open a_cursor for select * from mytable;

end ;


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Làm cách nào để thêm số 0 đứng đầu trong một số trong truy vấn SQL của Oracle?

  2. Giúp tính tổng phức tạp trong tập dữ liệu phân cấp

  3. Truy vấn bên trong trên một bảng duy nhất với các điều kiện IN và NOT IN

  4. Từ XML bên trong CLOB, đến bảng Oracle với danh sách các đường dẫn

  5. Cách đặt hàng theo tên tháng trong PostgreSQL hoặc Oracle