あなたが解決しようとしている問題は何ですか?個別のUPDATE
を実行することは意味がありません ループ内の各パーティションに対するステートメント。 ab = 'c'
であるテーブルのすべての行を本当に更新したい場合 、1つのUPDATE
を発行するだけです ステートメント
UPDATE cdr_data cdt
SET a = 'B'
WHERE ab = 'c'
潜在的にPARALLEL
Oracleが複数のパーティションを並行して更新できるようにするヒント。
本当に、本当に各パーティションを個別に更新したい場合は、パーティションキーに基づいて更新する方がはるかに理にかなっています。たとえば、テーブルに日付に基づく日次パーティションがある場合
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;
partition( <<partition name>> )
を使用する 構文は絶対的な最後の手段です。その道を進むことを本当に決心している場合は、動的SQLを使用し、ループ内でSQLステートメントを作成し、EXECUTE IMMEDIATE
を使用する必要があります。 またはdbms_sql
実行します。