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

Предположим, у меня есть главная таблица (TEST), в которой хранятся имена различных таблиц, таких как

ID | TABLE_NAME
1  | TABLE_1
2  | TABLE_2
3  | TABLE_3

. Теперь я хочу обновить таблицы следующим образом:

update (
   select TABLE_NAME 
   from TEST 
   where id =1 
 ) t set t.(some attribute) = 'XYZ';

Можно ли это сделать??

Ответы [ 2 ]

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

Используйте блок / процедуру PL / SQL, чтобы сделать это с EXECUTE IMMEDIATE

DECLARE
     v_value   VARCHAR2(10) := 'XYZ';
BEGIN
     FOR t IN (
          SELECT table_name
          FROM test --where condition
     ) LOOP
          EXECUTE IMMEDIATE 'UPDATE ' || r.table_name || ' 
        SET some_attribute = :somevalue'
               USING v_value;
     END LOOP;
END;
/
0 голосов
/ 24 октября 2018

Да, ваш синтаксис должен работать с некоторыми небольшими изменениями:

UPDATE (SELECT some_col FROM TEST WHERE id = 1)
SET some_col = 'XYZ';

Вам нужно предоставить столбцы, которые вы хотите обновить, добавив их в предложение select подзапроса.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...