0

我正在编写一个由 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 的示例都是文字数组,似乎没有人想到如何使用作为存储过程的返回值的数组。

帮助???

4

1 回答 1

0

我对 h2 不熟悉,但是这个页面说你必须在数组周围放置 ()。

SELECT ID FROM ACCOUNTS WHERE ID IN (ANCESTOR_PKS(5))

也许你甚至必须添加一个子选择

SELECT ID FROM ACCOUNTS WHERE ID IN (SELECT ANCESTOR_PKS(5))
于 2012-07-25T22:36:22.123 回答