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.