HSQL:如何将序列的下一个值保存到变量中?

时间:2015-11-13 01:07:40

标签: hsqldb

我正在使用HSQL,在我的存储过程中,我需要将“NEXT VALUE FOR MY_SEQUENCE”保存到变量中。我该怎么做?

CREATE PROCEDURE MYPROCEDURE(
IN PARAM1 NUMERIC)
MODIFIES SQL DATA
BEGIN ATOMIC
DECLARE NEXTID NUMERIC;
SELECT NEXT VALUE FOR MY_SEQUENCE INTO NEXTID FROM MY_TABLE;
INSERT INTO MY_TABLE(ID, COLUMN1) VALUES(NEXTID, PARAM1);
END;

问题: 变量NEXTID返回null。

1 个答案:

答案 0 :(得分:0)

看起来问题出在SELECT ... INTO语句中。 MY_TABLE没有行或有多行,NEXTID变量未分配给。

您可以尝试使用最新版本的HSQLDB进行直接分配:

SET NEXTID = NEXT VALUE FOR MY_SEQUENCE

对于旧版本的HSQLDB,您需要一个只有一行的表,并从该表中选择以分配给序列。设置Oracle兼容模式时,可以使用DUAL表。否则,用一行创建自己的表。

SELECT NEXT VALUE FOR MY_SEQUENCE INTO NEXTID FROM DUAL;