Apa masalah yang Anda coba selesaikan? Tidak masuk akal untuk menjalankan UPDATE yang terpisah pernyataan terhadap setiap partisi dalam satu lingkaran. Jika Anda benar-benar ingin memperbarui setiap baris dalam tabel di mana ab = 'c' , cukup keluarkan satu UPDATE pernyataan
UPDATE cdr_data cdt
SET a = 'B'
WHERE ab = 'c'
berpotensi dengan PARALLEL petunjuk yang memungkinkan Oracle memperbarui beberapa partisi secara paralel.
Jika Anda benar-benar ingin memperbarui setiap partisi secara independen, akan lebih masuk akal untuk melakukannya berdasarkan kunci partisi. Misalnya, jika tabel Anda memiliki partisi harian berdasarkan tanggal
FOR i IN 1 .. <<number of daily partitions>>
LOOP
UPDATE cdr_data cdt
SET a = 'B'
WHERE ab = 'c'
AND partition_key = <<minimum date>> + i;
END LOOP;
Menggunakan partition( <<partition name>> ) sintaks adalah pilihan terakhir yang mutlak. Jika Anda benar-benar bertekad untuk menempuh jalan itu, Anda harus menggunakan SQL dinamis, membuat pernyataan SQL dalam loop dan menggunakan EXECUTE IMMEDIATE atau dbms_sql untuk mengeksekusinya.