非常に単純なHSQLDBCREATEPROCEDUREステートメントがあります。
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ツールの1つ(DatabaseManagerSwingなど)を使用してこのSQLを実行すると、正常に機能します。
- まったく同じコマンド(選択、挿入、削除など)を使用して他のSQLステートメントを実行できますが、CREATEPROCEDUREは実行できません。
- 私のscript.sqlファイルには6行しか含まれていませんが、エラーには7行目が記載されています。これは私には意味がありません。
- ファイルのSQLの最後にセミコロンを追加しても違いはありません
- 私はこれをWindowsとLinuxの両方で試しましたが、まったく同じ結果になりました
- stdinを介してインラインSQLを使用してファイルをSQLツールに渡そうとしましたが、まったく同じ結果になりました
- ストアドプロシージャの本体を別のものに変更しようとしましたが、違いはありませんでした
私はこの時点でアイデアがありません。誰かがこのエラーに遭遇しましたか?それについて何かできることはありますか?