我有一个非常简单的 HSQLDB CREATE PROCEDURE 语句:
CREATE PROCEDURE test_procedure()
CONTAINS SQL
BEGIN
DECLARE test_variable INTEGER;
SET test_variable = 0;
END
当我尝试使用 SQLTool 执行此 SQL 时,它失败并出现“未终止的输入”错误。我正在使用的命令是:
java -jar -cp $HSQLDB_HOME/lib/sqltool.jar:$HSQLDB_HOME/lib/hsqldb.jar $HSQLDB_HOME/lib/sqltool.jar db script.sql
我得到的确切错误是:
SEVERE Error at 'script.sql' line 7:
"? CREATE PROCEDURE test_procedure()
CONTAINS SQL
BEGIN ATOMIC
DECLARE test_variable INTEGER;
SET test_variable = 0;
END"
Unterminated input: "CREATE PROCEDURE test_procedure()
CONTAINS SQL
BEGIN ATOMIC
DECLARE test_variable INTEGER;
SET test_variable = 0;
END"
org.hsqldb.cmdline.SqlTool$SqlToolException
到目前为止,我已经弄清楚了这么多:
- 如果我使用 HSQLDB 提供的 GUI 工具之一(如 DatabaseManagerSwing)运行此 SQL,它可以正常工作。
- 我可以使用完全相同的命令(选择、插入、删除等)执行其他 SQL 语句,但不能执行 CREATE PROCEDURE
- 我的 script.sql 文件只包含 6 行,但错误提到了第 7 行,这对我来说毫无意义
- 在文件中的 SQL 末尾添加分号没有区别
- 我在 Windows 和 Linux 上都试过了,结果完全相同
- 我试图通过标准输入将文件传递给 SQL 工具,并使用具有完全相同结果的内联 SQL
- 我尝试将存储过程主体更改为其他内容,但没有任何区别
在这一点上,我没有想法。有没有人遇到过这个错误?有什么可以做的吗?