我需要在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.你可以在没有序列对象的情况下完成它,它只会生成几行数字.我有时使用它来插入生成的测试数据行.