Wat is het probleem dat je probeert op te lossen? Het heeft geen zin om een aparte UPDATE
. uit te voeren statements tegen elke partitie in een lus. Als u echt elke rij in de tabel wilt bijwerken waar ab = 'c'
, geef gewoon een enkele UPDATE
. uit verklaring
UPDATE cdr_data cdt
SET a = 'B'
WHERE ab = 'c'
mogelijk met een PARALLEL
hint waarmee Oracle meerdere partities parallel kan updaten.
Als je echt, echt elke partitie onafhankelijk wilt bijwerken, zou het veel logischer zijn om dit te doen op basis van de partitiesleutels. Als uw tafel bijvoorbeeld dagelijkse partities heeft op basis van een datum
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;
De partition( <<partition name>> )
. gebruiken syntaxis is een absoluut laatste redmiddel. Als je echt vastbesloten bent om dat pad te gaan, moet je dynamische SQL gebruiken, de SQL-instructie in de lus construeren en EXECUTE IMMEDIATE
gebruiken of dbms_sql
om het uit te voeren.