HSQL数据库:加载特定Java类路径
我有一个内存中的HSQL数据库(v1.8)正在运行,我可以使用Java连接到它并运行“创建表””查询 我正在尝试创建和运行存储过程,从HSQL文档中可以创建一个别名并使其指向Java类。然后让Java类执行存储过程将执行的必要处理 我已经在HSQL中使用如下语句创建了一个别名-HSQL数据库:加载特定Java类路径,java,hsqldb,Java,Hsqldb,我有一个内存中的HSQL数据库(v1.8)正在运行,我可以使用Java连接到它并运行“创建表””查询 我正在尝试创建和运行存储过程,从HSQL文档中可以创建一个别名并使其指向Java类。然后让Java类执行存储过程将执行的必要处理 我已经在HSQL中使用如下语句创建了一个别名- CREATE ALIAS MySPROC FOR "com.mypackage.MyClass.myFunction"; 然后我尝试使用如下Java代码运行此存储过程- java.sql.CallableStatem
CREATE ALIAS MySPROC FOR "com.mypackage.MyClass.myFunction";
然后我尝试使用如下Java代码运行此存储过程-
java.sql.CallableStatement stmt = cnt.prepareCall(storedProcedureCall);
其中cnt的类型为java.sql.Connection
我得到一个错误如下-
java.lang.RuntimeException: java.sql.SQLException: Function not found com.mypackage.MyClass java.lang.ClassNotFoundException: com.mypackage.MyClass in statement [ CALL MySPROC(?,?,?) ]
at org.hsqldb.jdbc.Util.throwError(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)
etc.
java.lang.RuntimeException:java.sql.SQLException:Function not found com.mypackage.MyClass java.lang.ClassNotFoundException:com.mypackage.MyClass在语句[调用myproc(?,,?)]
位于org.hsqldb.jdbc.Util.throwError(未知源)
位于org.hsqldb.jdbc.jdbcPreparedStatement。(来源未知)
位于org.hsqldb.jdbc.jdbcCallableStatement。(来源未知)
位于org.hsqldb.jdbc.jdbcConnection.prepareCall(未知源)
等
我的理解是,我必须向HSQL显示“com.mypackage.MyClass”的位置
如何做到这一点?下面是我在2.2.9中使用的create procedure sql语句:
drop procedure ms.cleanupLocations;
create procedure ms.cleanupLocations(myLocation int)
MODIFIES SQL DATA
BEGIN ATOMIC
delete from ms.mytable where myLocation = 0;
END;
下面是调用它的Java代码:
static void cleanupSigSumm(Connection cn, int locationNumber) throws SQLException {
CallableStatement proc = cn.prepareCall("{ call ms.cleanupSigSumm(?) }");
proc.setInt(1, locationNumber);
proc.execute();
}
这不是一个答案,只是一个观察:如果您将HSQL升级到至少2.2,您可以使用本机SQL过程,而不必使用Java类。