Jaký je problém, který se snažíte vyřešit? Nemá smysl spouštět samostatné UPDATE příkazy proti každému oddílu ve smyčce. Pokud opravdu chcete aktualizovat každý řádek v tabulce, kde ab = 'c' , stačí vydat jedinou UPDATE prohlášení
UPDATE cdr_data cdt
SET a = 'B'
WHERE ab = 'c'
potenciálně s PARALLEL nápověda, která by umožnila Oracle aktualizovat více oddílů paralelně.
Pokud opravdu, ale opravdu chcete aktualizovat každý oddíl nezávisle, bylo by mnohem smysluplnější to udělat na základě klíčů oddílu. Pokud má například tabulka denní oddíly založené na datu
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;
Pomocí partition( <<partition name>> ) syntaxe je absolutní poslední možností. Pokud jste skutečně odhodláni jít touto cestou, budete muset použít dynamický SQL, vytvořit příkaz SQL ve smyčce a použít EXECUTE IMMEDIATE nebo dbms_sql k provedení.