很多RDBMS都支持某种形式的标准SQL序列。创建一个序列的标准SQL语法是。
CREATE SEQUENCE s;
以下是你如何使用jOOQ从这个序列中获取一个值,假设你使用的是代码生成器。
// import static com.example.generated.Sequences.*;
System.out.println(ctx.fetchValue(S.nextval()));
序列表达式可以翻译成各种方言。
-- CockroachDB, PostgreSQL, YugabyteDB
nextval('s')
-- Db2, HANA, Informix, Oracle, Snowflake, Sybase SQL Anywhere, Vertica
s.nextval
-- Derby, Firebird, H2, HSQLDB, MariaDB, SQL Server
NEXT VALUE FOR s
你也可以把S.nextval()
字段表达式嵌入到任何其他可以找到Field<?>
的地方,包括从SELECT
内取值。
ctx.select(S.nextval()).fetch();
或者,如果你需要一次性获取多个序列值,使用nextvals()
。
System.out.println(ctx.fetchValues(S.nextvals(10)));
这就会打印出类似的东西。
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
而正在执行的查询使用jOOQ的GENERATE_SERIES
仿真来一次性获取所有的值,例如H2的。
SELECT NEXT VALUE FOR s
FROM system_range(1, 10)
-
扫描二维码关注公众号,回复: 14419062 查看本文章
喜欢这个
Like Loading...