Jaki problem próbujesz rozwiązać? Nie ma sensu uruchamiać oddzielnej UPDATE
instrukcji względem każdej partycji w pętli. Jeśli naprawdę chcesz zaktualizować każdy wiersz w tabeli, gdzie ab = 'c'
, po prostu wydaj pojedynczą UPDATE
oświadczenie
UPDATE cdr_data cdt
SET a = 'B'
WHERE ab = 'c'
potencjalnie z PARALLEL
wskazówka, która pozwoliłaby Oracle na równoległe aktualizowanie wielu partycji.
Jeśli naprawdę, naprawdę chcesz aktualizować każdą partycję niezależnie, bardziej sensowne byłoby zrobienie tego na podstawie kluczy partycji. Na przykład, jeśli Twój stół ma dzienne partycje na podstawie daty
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;
Korzystanie z partition( <<partition name>> )
składnia jest absolutną ostatecznością. Jeśli naprawdę chcesz iść tą ścieżką, musisz użyć dynamicznego SQL, konstruując instrukcję SQL w pętli i używając EXECUTE IMMEDIATE
lub dbms_sql
aby go wykonać.