2015-02-23 38 views
1

我正在嘗試編寫存儲過程。 通過SQL瀏覽器創建一切順利,但是當我將它保存在SQL文件並加載它通過雖然SqlTool失敗HSQLDB中的存儲過程。通過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文件需要是任何特定的編碼

回答

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

之前