【发布时间】:2016-08-04 17:49:21
【问题描述】:
我的 Oracle 数据库的每个表中都有几个 QA 列,我想使用插入/更新对象的用户名的值每天更新这些列。我可以手动更新表中的列,如下所示:
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 个表中的同一列是一项乏味(且无聊)的工作。问题是:是否有使用 LOOP(或任何其他方法)更新 25 个表中的列?
我的 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;
【问题讨论】:
标签: sql oracle loops plsql auto-update