对于我用 Java 编写的一个小函数,我有以下 CREATE FUNCTION 代码。这是一个简单的函数,可以转换修改后的儒略日数字、双精度数,并将时间戳作为字符串返回。我想用这个函数在 Schema 中创建一个视图。
CREATE FUNCTION to_date_string(mjd DOUBLE)
RETURNS VARCHAR(50)
LANGUAGE JAVA DETERMINISTIC NO SQL PARAMETER STYLE JAVA
SPECIFIC to_date_string_from_utc_mjd
EXTERNAL NAME 'CLASSPATH:org.kls.md.sqljrt.StringUtil.toFormat';
我已经将它编译成一个小的 JAR 文件。
如何注册它以便 RDBMS 能够找到并调用该函数?我尝试将此文件放在与 hsqldb.jar 文件、server.properties 文件、数据库文件相同的目录中。感觉一头雾水。
我正在使用 Squirrel-SQL 在端口 9001 上以服务器模式运行的 HSQLDB 2.3.0 快照 50 再次执行 SQL 命令。这是 Squirrel 报告的错误消息:
Error: user lacks privilege or object not found java.lang.ClassNotFoundException: org.kls.md.sqljrt.StringUtil org.kls.md.sqljrt.StringUtil in statement [CREATE FUNCTION to_date_string(mjd DOUBLE)
RETURNS VARCHAR(50)
LANGUAGE JAVA DETERMINISTIC NO SQL PARAMETER STYLE JAVA
SPECIFIC to_date_string_from_utc_mjd
EXTERNAL NAME 'CLASSPATH:org.kls.md.sqljrt.StringUtil.toFormat']
SQLState: 42501
ErrorCode: -26