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í.