尝试配置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(]
任何想法,我做错了什么?
答案 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;