如何从两个表创建插入语句脚本
Posted
技术标签:
【中文标题】如何从两个表创建插入语句脚本【英文标题】:How to create insert statements script from two tables 【发布时间】:2021-01-12 17:08:29 【问题描述】:我正在使用 oracle SQL,我需要向多个用户插入数据,但我需要先创建插入语句并仅替换第一个插入语句中的用户 ID,如下所示:
1- 这是插入语句:
INSERT INTO SYS_USER_FUNCTIONS ( USER_ID, FUNCTION_ID_PARENT, FUNCTION_ID_CHILD, A, U,
D, V, R, CREATING_USER, CREATING_DATE, CREATING_TIME, LAST_UPDATE_DATE, LAST_UPDATE_COUNT,
LAST_UPDATE_USER, LAST_UPDATE_TRANSACTION, S )
VALUES ( 'JAD', 'DOCMDOC', 'OPDA100', 1, 1, 2, 1, 2, 'ZYAD', 20210112, 1515, 20210112
, 1, 'ZYAD', 'I', 2);
COMMIT;
2- 我只需要生成插入语句并替换 `
USER_ID
并从下表中选择 USER_ID
SELECT USER_ID
FROM USERS
WHERE USER_FUNCTION = 'DOCMDOC'
我该怎么做?
【问题讨论】:
【参考方案1】:我想你只是想要insert . . . select
:
INSERT INTO SYS_USER_FUNCTIONS ( USER_ID, FUNCTION_ID_PARENT, FUNCTION_ID_CHILD, A, U,
D, V, R, CREATING_USER, CREATING_DATE, CREATING_TIME, LAST_UPDATE_DATE, LAST_UPDATE_COUNT,
LAST_UPDATE_USER, LAST_UPDATE_TRANSACTION, S )
SELECT u.id, 'DOCMDOC', 'OPDA100', 1, 1, 2, 1, 2, 'ZYAD', 20210112, 1515, 20210112
, 1, 'ZYAD', 'I', 2
FROM Users
WHERE USER_FUNCTION = 'DOCMDOC';
【讨论】:
【参考方案2】:您可以为多个用户使用简单的 for-loop plsql 块并修改您想要的内容:
begin
for i in (SELECT USER_ID FROM USERS WHERE USER_FUNCTION = 'DOCMDOC')
loop
INSERT INTO SYS_USER_FUNCTIONS ( USER_ID, FUNCTION_ID_PARENT, FUNCTION_ID_CHILD, A, U,
D, V, R, CREATING_USER, CREATING_DATE, CREATING_TIME, LAST_UPDATE_DATE, LAST_UPDATE_COUNT,
LAST_UPDATE_USER, LAST_UPDATE_TRANSACTION, S )
VALUES ( i.USER_ID, 'DOCMDOC', 'OPDA100', 1, 1, 2, 1, 2, 'ZYAD', 20210112, 1515, 20210112
, 1, 'ZYAD', 'I', 2);
end loop;
end;
或者插入...仅针对这种情况选择。
INSERT INTO SYS_USER_FUNCTIONS ( USER_ID, FUNCTION_ID_PARENT, FUNCTION_ID_CHILD, A, U, D, V, R, CREATING_USER, CREATING_DATE, CREATING_TIME, LAST_UPDATE_DATE, LAST_UPDATE_COUNT,LAST_UPDATE_USER, LAST_UPDATE_TRANSACTION, S )
SELECT USER_ID, 'DOCMDOC', 'OPDA100', 1, 1, 2, 1, 2, 'ZYAD', 20210112, 1515, 20210112, 1, 'ZYAD', 'I', 2 FROM USERS WHERE USER_FUNCTION = 'DOCMDOC';
【讨论】:
以上是关于如何从两个表创建插入语句脚本的主要内容,如果未能解决你的问题,请参考以下文章
如何使用oracle中的触发器从另外两个表中插入一个表中的数据