Hvad er problemet, du forsøger at løse? Det giver ikke mening at køre separat UPDATE
sætninger mod hver partition i en løkke. Hvis du virkelig ønsker at opdatere hver række i tabellen, hvor ab = 'c'
, udsend bare en enkelt UPDATE
erklæring
UPDATE cdr_data cdt
SET a = 'B'
WHERE ab = 'c'
potentielt med en PARALLEL
tip, der ville tillade Oracle at opdatere flere partitioner parallelt.
Hvis du virkelig, virkelig ønsker at opdatere hver partition uafhængigt, ville det give meget mere mening at gøre det baseret på partitionsnøglerne. For eksempel, hvis din tabel har daglige partitioner baseret på en dato
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;
Brug af partition( <<partition name>> )
syntaks er en absolut sidste udvej. Hvis du virkelig er fast besluttet på at gå ned ad den vej, skal du bruge dynamisk SQL, konstruere SQL-sætningen i løkken og bruge EXECUTE IMMEDIATE
eller dbms_sql
for at udføre det.