【发布时间】:2014-09-14 13:09:05
【问题描述】:
我正在为使用按分层子句连接的查询编写测试用例。 HSQL Db中好像不支持这个子句。
是否有任何替代方法可以测试查询或编写执行相同操作的不同查询。
查询很简单
SELECT seq.nextval
FROM DUAL
CONNECT BY level <= ?
谢谢。
【问题讨论】:
标签: java sql oracle hsqldb hierarchical-query
我正在为使用按分层子句连接的查询编写测试用例。 HSQL Db中好像不支持这个子句。
是否有任何替代方法可以测试查询或编写执行相同操作的不同查询。
查询很简单
SELECT seq.nextval
FROM DUAL
CONNECT BY level <= ?
谢谢。
【问题讨论】:
标签: java sql oracle hsqldb hierarchical-query
您不需要为此进行递归查询。
要生成数字序列,您可以使用sequence_array
select *
from unnest(sequence_array(1, ?, 1))
更多细节在手册中:
http://hsqldb.org/doc/2.0/guide/builtinfunctions-chapt.html#N14088
如果您需要将序列推进特定数量的条目,您可以使用以下内容:
select NEXT VALUE FOR seq
from unnest(sequence_array(1, 20, 1));
如果您需要将序列设置为新值,这在 HSQLDB 中要容易得多:
ALTER SEQUENCE seq restart with 42;
如果您正在寻找递归查询,那么 HSQLDB 支持 ANSI SQL 标准:递归公用表表达式,手册中对此进行了说明:
http://hsqldb.org/doc/2.0/guide/dataaccess-chapt.html#dac_with_clause
【讨论】:
根据this 2-year-old ticket,只有 Oracle 和一个名为 CUBRID 的数据库具有 CONNECT BY 功能。如果你真的想要它,也许你可以在票上投票。不过,据我所知,这个项目只有两个人,所以不要屏住呼吸。
【讨论】:
connect by,但它确实支持递归查询:hsqldb.org/doc/2.0/guide/dataaccess-chapt.html#dac_with_clause