HSQLDB 中的存储过程。通过SQLTool创建
Stored Procedure in HSQLDB. Creation through SQLTool
我正在尝试编写一个存储过程。
通过 SQL 浏览器创建它很顺利,但是当我将它保存在 SQL 文件中并通过 SQL 工具加载它时,它失败了
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 文件是否需要任何特定编码
更新存储过程
存储过程的正确定义是这样的
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 不接受直接 select
在编写存储过程和函数之前,请仔细阅读这个
http://hsqldb.org/doc/guide/sqlroutines-chapt.html#src_psm_statements
我正在尝试编写一个存储过程。 通过 SQL 浏览器创建它很顺利,但是当我将它保存在 SQL 文件中并通过 SQL 工具加载它时,它失败了
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 文件是否需要任何特定编码
更新存储过程
存储过程的正确定义是这样的
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 不接受直接 select
在编写存储过程和函数之前,请仔细阅读这个 http://hsqldb.org/doc/guide/sqlroutines-chapt.html#src_psm_statements