将tigase从derby移植到hsqldb ...如何调用存储的Java过程并丢弃(忽略)结果?

时间:2010-07-13 12:35:07

标签: derby hsqldb

尝试配置tigase以使用hsqldb(hsqldb-1.8.0.9-1jpp.2)而不是derby(不要问为什么,这不是重点)并且一切正常,除了设置一些属性到底。在德比,我有

CREATE procedure TigAddUserPlainPw(userId varchar(2049), userPw varchar(255)) 
    PARAMETER STYLE JAVA
    LANGUAGE JAVA
    MODIFIES SQL DATA
    DYNAMIC RESULT SETS 1
    EXTERNAL NAME 'tigase.db.derby.StoredProcedures.tigAddUserPlainPw';

call TigAddUserPlainPw('db-properties', NULL);

当我尝试用hsqldb

复制它时
CREATE ALIAS TigAddUserPlainPw
    FOR "tigase.db.derby.StoredProcedures.tigAddUserPlainPw";

CALL TigAddUserPlainPw('db-properties', NULL);

我收到此错误消息

[root@tikanga scripts]# ./hsqldb-db-create.sh /var/lib/tigase/db/tigase
SQL Error at '/etc/tigase/database/hsqldb-schema-4-props.sql' line 1:
"CALL TigAddUserPlainPw('db-properties', NULL)"
Wrong data type: [Ljava.sql.ResultSet; in statement [CALL TigAddUserPlainPw(]

任何想法,我做错了什么?

2 个答案:

答案 0 :(得分:1)

您不能使用Java静态方法。 HSQLDB 1.8.x不接受Result []参数。

转换为HSQLDB 2.0会更容易,因为它的存储过程支持比1.8版本有所改进。

您的示例显示我们需要对HSQLDB进行一些更多改进以支持这些过程声明。

答案 1 :(得分:0)

据我所知,HSQLDB支持返回ResultSet的Java函数(如果我错了,Fred将纠正我):http://hsqldb.org/doc/2.0/guide/sqlroutines-chapt.html#N12835

您需要一种新方法:

public static ResultSet tigAddUserPlainPw(
    String userId, String userPw) throws SQLException;