¿Cuál es el problema que estás tratando de resolver? No tiene sentido ejecutar UPDATE
por separado declaraciones contra cada partición en un bucle. Si realmente desea actualizar cada fila de la tabla donde ab = 'c'
, solo emita un único UPDATE
declaración
UPDATE cdr_data cdt
SET a = 'B'
WHERE ab = 'c'
potencialmente con un PARALLEL
pista que permitiría a Oracle actualizar varias particiones en paralelo.
Si realmente desea actualizar cada partición de forma independiente, tendría mucho más sentido hacerlo en función de las claves de partición. Por ejemplo, si su tabla tiene particiones diarias basadas en una fecha
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;
Uso de la partición partition( <<partition name>> )
la sintaxis es un último recurso absoluto. Si realmente está decidido a seguir ese camino, necesitaría usar SQL dinámico, construir la instrucción SQL en el ciclo y usar EXECUTE IMMEDIATE
o dbms_sql
para ejecutarlo.