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