HSQLDB中的存储过程。通过SQLTool创建

时间:2015-02-23 21:42:18

标签: java sql hsqldb in-memory-database

我正在尝试编写存储过程。 通过SQL浏览器创建它很顺利但是当我将它保存在SQL文件中并通过SQLTool加载它时失败


CREATE PROCEDURE SP_GETNEXTSEQUENCE(OUT out_new_seq_no DECIMAL, IN in_seq_id DECIMAL) 
MODIFIES SQL DATA
   BEGIN ATOMIC
     UPDATE SEQUENCE_GENERATOR SET seq_value=seq_value+1 where seq_id=in_seq_id;
     select seq_value into out_new_seq_no from SEQUENCE_GENERATOR where seq_id=seq_id;
   END;
   .;

我收到以下错误

Exception in thread "main" java.lang.Error: Error: could not match input
    at org.hsqldb.cmdline.sqltool.SqlFileScanner.zzScanError(Unknown Source)
    at org.hsqldb.cmdline.sqltool.SqlFileScanner.yylex(Unknown Source)
打电话     SqlTool.objectMain(sqlToolParams);

,其中

String [] sqlToolParams = {"--inlineRc", "URL="+"jdbc:hsqldb:mem:TestDB", SCHEMAPATH};

我需要帮助纠正语法。

我试图从http://hsqldb.org/doc/2.0/util-guide/sqltool-chapt.html#sqltool_raw-sect

获取线索

但似乎我的理解还不够充分

添加了问题 - SQL文件是否需要是任何特定的编码

1 个答案:

答案 0 :(得分:0)

存储过程更新

正确定义存储过程就像这样


CREATE PROCEDURE SP_GETNEXTSEQUENCE(OUT pno_new_id INTEGER, IN pni_seq_id INTEGER)  
    MODIFIES SQL DATA
    BEGIN ATOMIC    
        UPDATE SEQUENCE_GENERATOR SET seq_value=seq_value+1 where seq_id=pni_seq_id;
        SET pno_new_id = (select seq_value from SEQUENCE_GENERATOR where seq_id=pni_seq_id);     
    END
 .;

经过一番挖掘后发现必须纠正Select语句。 SQLTool不接受直接选择

在编写存储过程和函数之前,请完成此操作 http://hsqldb.org/doc/guide/sqlroutines-chapt.html#src_psm_statements

相关问题