Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/314.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/hadoop/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从java调用hsql函数_Java_Hsqldb - Fatal编程技术网

从java调用hsql函数

从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

我试图使用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.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;