在DB2中增加一次序列两次

Mik*_*one 2 db2 sequence

我需要在DB2(版本9.1)中两次获取序列的下一个值.而不是执行以下两次:

SELECT nextval FOR schema.sequence AS id
FROM dual
Run Code Online (Sandbox Code Playgroud)

我想做的事情如下:

SELECT nextval FOR schema.sequence AS id1,
       nextval FOR schema.sequence AS id2
FROM dual
Run Code Online (Sandbox Code Playgroud)

除上述内容外,仅增加一次:

ID1         ID2        
----------- -----------
        643         643

  1 record(s) selected.
Run Code Online (Sandbox Code Playgroud)

我被迫只查询两次,还是有办法在1次查询中增加两次?

小智 6

这有点复杂,但它可以工作(我通过在DB2 v.9中运行它来验证).

WITH GENERATED (KEYVAL) AS
(select 1
   from sysibm.sysdummy1
  UNION ALL
 SELECT KEYVAL + 1
   FROM GENERATED
  WHERE KEYVAL < 2)        -- how many you want

SELECT KEYVAL AS INCREMENT_NUMBER, NEXTVAL FOR schema.sequence
  FROM GENERATED;
Run Code Online (Sandbox Code Playgroud)

这是我最喜欢的一些代码,它是递归SQL.你可以在没有序列对象的情况下完成它,它只会生成几行数字.我有时使用它来插入生成的测试数据行.