从java调用hsql函数
我试图使用hsqldb从java调用oracle函数进行集成测试 函数:(Function.sql) Java代码:从java调用hsql函数,java,hsqldb,Java,Hsqldb,我试图使用hsqldb从java调用oracle函数进行集成测试 函数:(Function.sql) Java代码: int acctNo = 0; CallableStatement cstmt = connection.prepareCall("{? = CALL balance(?)}"); cstmt.registerOutParameter(1, Types.FLOAT); cstmt.setInt(2, acctNo); cstmt.execu
int acctNo = 0;
CallableStatement cstmt = connection.prepareCall("{? = CALL balance(?)}");
cstmt.registerOutParameter(1, Types.FLOAT);
cstmt.setInt(2, acctNo);
cstmt.executeUpdate();
float acctBal = cstmt.getFloat(1);
System.out.print("Test print: " + acctNo + " " +acctBal);
错误:
java.sql.SQLSyntaxErrorException: user lacks privilege or object not found: BALANCE
at org.hsqldb.jdbc.Util.sqlException(Unknown Source)
at org.hsqldb.jdbc.Util.sqlException(Unknown Source)
at org.hsqldb.jdbc.JDBCPreparedStatement.<init>(Unknown Source)
at org.hsqldb.jdbc.JDBCCallableStatement.<init>(Unknown Source)
at org.hsqldb.jdbc.JDBCConnection.prepareCall(Unknown Source)
java.sql.SQLSyntaxErrorException:用户缺少权限或找不到对象:平衡
位于org.hsqldb.jdbc.Util.sqlException(未知源)
位于org.hsqldb.jdbc.Util.sqlException(未知源)
位于org.hsqldb.jdbc.JDBCPreparedStatement。(来源未知)
位于org.hsqldb.jdbc.JDBCCallableStatement。(来源未知)
位于org.hsqldb.jdbc.JDBCConnection.prepareCall(未知源)
请在这方面帮助我。
注意:创建表和插入数据工作正常。然后必须将函数更改为HSQLDB语法,并在表之后创建它。修改后的函数如下所示:
CREATE FUNCTION balance (acct_id INTEGER) RETURNS DOUBLE
BEGIN ATOMIC
DECLARE acct_bal DOUBLE;
SELECT bal INTO acct_bal FROM accts WHERE acct_no = acct_id;
RETURN acct_bal;
END;
CREATE FUNCTION balance (acct_id INTEGER) RETURNS DOUBLE
BEGIN ATOMIC
DECLARE acct_bal DOUBLE;
SELECT bal INTO acct_bal FROM accts WHERE acct_no = acct_id;
RETURN acct_bal;
END;