У меня есть пара QA-столбцов в каждой таблице моей базы данных Oracle, которую я хочу ежедневно обновлять со значением имени пользователя, который вставил/обновил объект. Я могу обновить столбец вручную на столе, как:Обновление столбца в нескольких таблицах с помощью цикла
UPDATE TEST.TABLE1 TB
SET TB.ADDED_BY2 =
(
select IA.FULL_NAME
from ISM.APP_USER IA
where IA.NAME = UPPER(TB.ADDED_BY)
),
TB.CHANGED_BY2 =
(
select IA.FULL_NAME
from ISM.APP_USER IA
where IA.NAME = UPPER(TB.CHANGED_BY)
)
where TO_CHAR(CREATION_DATUM, 'YYYY-MM-DD') = TO_CHAR(SYSDATE) AND ADDED_BY2 IS NULL;
Но обновить тот же столбец в 25 таблицах является утомительной (и скучной) работой. Возникает вопрос: существует ли необходимость обновлять столбцы в 25 таблицах с помощью LOOP (или любого другого метода)?
Моя ultimage цель состоит в том, чтобы сделать что-то как следующее:
FOR I IN SELECT TABLE_NAME FROM USER_TABLES WHERE TABLE_NAME IN ('TEST.TABLE1', 'TEST.TABLE2')
LOOP
UPDATE I.TABLE_NAME TB
SET TB.ADDED_BY2 =
(
select IA.FULL_NAME
from ISM.APP_USER IA
where IA.NAME = UPPER(TB.ADDED_BY)
),
TB.CHANGED_BY2 =
(
select IA.FULL_NAME
from ISM.APP_USER IA
where IA.NAME = UPPER(TB.CHANGED_BY)
)
where TO_CHAR(CREATION_DATUM, 'YYYY-MM-DD') = TO_CHAR(SYSDATE) AND ADDED_BY2 IS NULL;
END LOOP;