Qual é o problema que você está tentando resolver? Não faz sentido executar
UPDATE
separado instruções em cada partição em um loop. Se você realmente deseja atualizar todas as linhas da tabela em que ab = 'c'
, basta emitir um único UPDATE
declaração UPDATE cdr_data cdt
SET a = 'B'
WHERE ab = 'c'
potencialmente com um
PARALLEL
dica que permitiria ao Oracle atualizar várias partições em paralelo. Se você realmente deseja atualizar cada partição independentemente, faria muito mais sentido fazê-lo com base nas chaves de partição. Por exemplo, se sua tabela tiver partições diárias com base em uma 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 a
partition( <<partition name>> )
sintaxe é um último recurso absoluto. Se você estiver realmente determinado a seguir esse caminho, precisará usar SQL dinâmico, construindo a instrução SQL no loop e usando EXECUTE IMMEDIATE
ou dbms_sql
para executá-lo.