我正在编写一个由 h2 数据库支持的会计系统。帐户树存储在 ACCOUNTS 表中,PARENT_ID 列存储树中的链接。
要获取树中给定节点的路径,我有以下存储过程:
public static Object[] getAncestorPKs(Long id)
它的工作是产生一个整数数组,作为给定节点和树根之间的 PARENT_ID 值。我在数据库中注册了名为 ANCESTOR_PKS 的过程,如下所示:
CREATE ALIAS IF NOT EXISTS ANCESTOR_PKS FOR "xxx.yyy.zzz.getAncestorPKs"
我的问题是我似乎找不到在不触发 SQLException 的情况下使用该东西的方法!我需要通过以下方式使用它:
SELECT ID FROM ACCOUNTS WHERE [...] AND ID IN ANCESTOR_PKS(5) [for example]
我收到以下错误:
Syntax error in SQL statement "SELECT ID FROM ACCOUNTS WHERE ID IN ANCESTOR_PKS[*](5) "; expected "("
但是ANCESTOR_PKS 后面有个括号!!!这到底是怎么回事?有没有办法将 IN 与存储过程的结果一起使用?我已经搜索和搜索,但是我看到的所有使用 IN 的示例都是文字数组,似乎没有人想到如何使用作为存储过程的返回值的数组。
帮助???