Was ist das Problem, das Sie zu lösen versuchen? Es macht keinen Sinn, ein separates UPDATE
auszuführen Anweisungen für jede Partition in einer Schleife. Wenn Sie wirklich jede Zeile in der Tabelle aktualisieren möchten, wobei ab = 'c'
, geben Sie einfach ein einzelnes UPDATE
aus Erklärung
UPDATE cdr_data cdt
SET a = 'B'
WHERE ab = 'c'
möglicherweise mit einem PARALLEL
Hinweis, der es Oracle ermöglichen würde, mehrere Partitionen parallel zu aktualisieren.
Wenn Sie wirklich, wirklich jede Partition unabhängig aktualisieren möchten, wäre es viel sinnvoller, dies auf der Grundlage der Partitionsschlüssel zu tun. Zum Beispiel, wenn Ihre Tabelle tägliche Partitionen basierend auf einem Datum hat
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;
Verwenden der partition( <<partition name>> )
Syntax ist ein absolut letzter Ausweg. Wenn Sie diesen Weg wirklich gehen wollen, müssen Sie dynamisches SQL verwenden, die SQL-Anweisung in der Schleife erstellen und EXECUTE IMMEDIATE
verwenden oder dbms_sql
um es auszuführen.