Qual è il problema che stai cercando di risolvere? Non ha senso eseguire UPDATE
separati istruzioni su ciascuna partizione in un ciclo. Se vuoi davvero aggiornare ogni riga della tabella dove ab = 'c'
, emetti un singolo UPDATE
dichiarazione
UPDATE cdr_data cdt
SET a = 'B'
WHERE ab = 'c'
potenzialmente con un PARALLEL
suggerimento che consentirebbe a Oracle di aggiornare più partizioni in parallelo.
Se vuoi davvero aggiornare ogni partizione in modo indipendente, avrebbe molto più senso farlo in base alle chiavi di partizione. Ad esempio, se la tua tabella ha partizioni giornaliere basate su una data
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;
Usando la partition( <<partition name>> )
la sintassi è l'ultima risorsa assoluta. Se sei veramente determinato a seguire quel percorso, dovresti usare l'SQL dinamico, costruendo l'istruzione SQL nel ciclo e usando EXECUTE IMMEDIATE
o dbms_sql
per eseguirlo.