您可以使用集合。 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
Results:
| 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 ) );
更新:
来自 OP 对另一个答案的评论:
我想从另一个表中获取数字列表
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;