在多行上插入单个序列值

Ger*_*rat 2 sql oracle sequences oracle11g

我正在尝试将多个记录插入表中,但对每个记录使用相同的序列值.

这类似于:如何使用序列值将多行插入oracle?但是给出的答案会插入多个不同的序列号,并且我希望多个recs使用相同的序列号.

create table test1  ( 
  col_a number, 
  col_b number
);
commit;

create sequence test_seq increment by 1 start with 2 minvalue 1 nocycle nocache noorder;
commit;

insert into test1 (col_a, col_b) 
select a.object_id, test_seq.nextval from (
  select object_id from all_objects where rownum < 5
) a;
commit;
Run Code Online (Sandbox Code Playgroud)

上面的问题是它检索并插入多个(不同的)"test_seq.nextval"值,我希望为每一行插入相同的值.

这甚至可以在直接sql中使用而不诉诸触发器(或多个sql语句)?相关问题的答案之一暗示可能不是,但我不清楚.

谢谢.
如果有帮助,我正在使用Oracle 11g.

Ren*_*ger 5

currval而不是nextval.

select test_seq.nextval from dual;

insert into test1 (col_a, col_b)
select a.object_id, test_seq.currval from (
  select object_id from all_objects where rownum < 5
  ) a;
Run Code Online (Sandbox Code Playgroud)

我知道没有方法可以在没有两个语句的情况下做到这一点,第一个是递增序列(因此可以通过currval使其可选),第二个使用currval.

  • 为什么单一声明?将它放入单个pl/sql块中是否计为单个语句,即单个可执行命令? (2认同)