Как создать скрипт insert statements из двух таблиц

#sql #oracle

#sql #Oracle

Вопрос:

Я использую oracle SQL, и мне нужно вставить данные нескольким пользователям, но сначала мне нужно создать операторы insert и заменить только идентификатор пользователя из первого оператора insert, как показано ниже :

1 — Это оператор insert :

     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- Мне нужно сгенерировать инструкции insert и заменить только `

 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:

Вы можете использовать простой блок plsql for-loop для нескольких пользователей и изменять то, что вы хотите:

 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 … выберите только для этого случая.

 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';