Java 当递归谓词使用绑定变量时,递归CTE不起作用
在“我知道,实验”功能中使用递归CTE时,以下查询不起作用: 连接con=getConnection; System.out.println错误结果:; PreparedStatement stmt=con.prepareStatement 使用递归tf作为+ 选择1+ 联合所有+ 选择t.f+1+ 从t+ 其中t.f<+ + 选择t.f+ 从t ; stmt.setInt1,10; 结果集rs=stmt.executeQuery; 而rs.next System.out.printlnrs.getInt1; 生产的产量为: 1. 预期结果将是: 1. 2. 3. 4. 5. 6. 7. 8. 9 10 有什么问题吗?这是一个已知的问题。当递归查询包含绑定变量时,H2会出现问题。以下查询未使用绑定值,并按预期工作:Java 当递归谓词使用绑定变量时,递归CTE不起作用,java,sql,h2,recursive-query,Java,Sql,H2,Recursive Query,在“我知道,实验”功能中使用递归CTE时,以下查询不起作用: 连接con=getConnection; System.out.println错误结果:; PreparedStatement stmt=con.prepareStatement 使用递归tf作为+ 选择1+ 联合所有+ 选择t.f+1+ 从t+ 其中t.f
System.out.println("Correct result:");
rs = con.createStatement().executeQuery(
"WITH recursive t(f) AS ( "+
" SELECT 1 "+
" UNION ALL "+
" SELECT t.f + 1 "+
" FROM t "+
" WHERE t.f < 10 "+
") "+
"SELECT t.f "+
"FROM t "
);
while (rs.next())
System.out.println(rs.getInt(1));
这是一个众所周知的问题。当递归查询包含绑定变量时,H2会出现问题。以下查询未使用绑定值,并按预期工作:
System.out.println("Correct result:");
rs = con.createStatement().executeQuery(
"WITH recursive t(f) AS ( "+
" SELECT 1 "+
" UNION ALL "+
" SELECT t.f + 1 "+
" FROM t "+
" WHERE t.f < 10 "+
") "+
"SELECT t.f "+
"FROM t "
);
while (rs.next())
System.out.println(rs.getInt(1));