Oracle динамически создает скрипт для обновления секционированной таблицы - PullRequest
0 голосов
/ 01 октября 2018

У меня есть таблица Oracle с несколькими разделами, которую я хочу обновить с помощью ключа разделения.

Существует ли способ динамически создать сценарий обновления, который учитывает ключ раздела, как показано ниже, БЕЗ необходимости вручную поддерживать такой сценарий

  update table where date between 'a' and 'b'

  update table where date between 'b' and 'c'.

1 Ответ

0 голосов
/ 01 октября 2018

Я думаю, что нет необходимости указывать диапазон в where clause для обновления отдельных разделов.Вы можете использовать partition_extension_clause обновления динамически.

BEGIN
     FOR r IN (
          SELECT partition_name
          FROM user_tab_partitions
          WHERE table_name = 'YOUR_TABLE'
     ) LOOP

    EXECUTE IMMEDIATE 'UPDATE YOUR_TABLE (' || r.partition_name || ')  SET somecol = somevalue where someother_clause';

      COMMIT; --if it's necessary
     END LOOP;
END;
/
...