首页 > 解决方案 > 如何从两个表创建插入语句脚本

问题描述

我正在使用 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'

我怎样才能做到这一点 ?

标签: sqloracle

解决方案


您可以对多个用户使用简单的 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';

推荐阅读