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

Bagaimana menggunakan SYS_REFCURSUR di pilih untuk pembaruan di pl/sql

Sebuah sys_refcursor tidak dapat digunakan dalam update penyataan. Anda dapat menggunakan kursor eksplisit seperti yang ditunjukkan di bawah ini. Gunakan cara ini:

    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;

Sunting:

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. Apakah Oracle mendukung pencarian teks lengkap?

  2. 12c Pindahkan File Data Online

  3. Perbedaan penanganan spasi antara Oracle dan SQL Server

  4. Tentukan ukuran hasil SQL yang diatur dalam KB

  5. Apa metode terbaik untuk selalu mendapatkan 2 tempat desimal di Oracle?