Вы можете использовать коллекцию. SYS.ODCINUMBERLIST
является встроенным VARRAY
, который вы можете использовать:
SQL Fiddle
Настройка схемы Oracle 11g R2 :
CREATE TABLE table_name(
user_id NUMBER,
sys_id NUMBER,
crt_tsp TIMESTAMP
);
CREATE SEQUENCE sequence_name;
INSERT INTO table_name( user_id, sys_id, crt_tsp)
SELECT sequence_name.NEXTVAL,
COLUMN_VALUE,
current_timestamp
FROM TABLE( SYS.ODCINUMBERLIST( 1,6,8,9,12,45,67 ) );
Запрос 1 :
SELECT * FROM table_name
Результаты :
| USER_ID | SYS_ID | CRT_TSP |
|---------|--------|----------------------------|
| 1 | 1 | 2018-05-14 14:14:08.157393 |
| 2 | 6 | 2018-05-14 14:14:08.157393 |
| 3 | 8 | 2018-05-14 14:14:08.157393 |
| 4 | 9 | 2018-05-14 14:14:08.157393 |
| 5 | 12 | 2018-05-14 14:14:08.157393 |
| 6 | 45 | 2018-05-14 14:14:08.157393 |
| 7 | 67 | 2018-05-14 14:14:08.157393 |
Или вы можете создать свой собственный тип:
CREATE TYPE NumberList IS TABLE OF NUMBER;
INSERT INTO table_name( user_id, sys_id, crt_tsp)
SELECT sequence_name.NEXTVAL,
COLUMN_VALUE,
current_timestamp
FROM TABLE( NumberList( 1,6,8,9,12,45,67 ) );
Обновление
Из комментария ОП к другому ответу:
Я хочу получить список номеров из другой таблицы
select id from table_name
Вы можете просто выбрать прямо из этой таблицы:
INSERT INTO table_name( user_id, sys_id, crt_tsp)
SELECT sequence_name.NEXTVAL,
id,
current_timestamp
FROM table_name;