HSQL:如何将序列的下一个值保存到变量中?
HSQL: How to save next value of sequence into a variable?
我正在使用 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。
看起来问题出在 SELECT ... INTO 语句上。 MY_TABLE 没有行或多于一行并且 NEXTID 变量未分配给。
您可以尝试使用最新版本的 HSQLDB 直接赋值:
SET NEXTID = NEXT VALUE FOR MY_SEQUENCE
对于旧版本的 HSQLDB,您需要有一个只有一行的 table 和此 table 中的 select 以分配给序列。当设置了 Oracle 兼容模式时,可以使用 DUAL table。否则用一行创建你自己的 table。
SELECT NEXT VALUE FOR MY_SEQUENCE INTO NEXTID FROM DUAL;
我正在使用 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。
看起来问题出在 SELECT ... INTO 语句上。 MY_TABLE 没有行或多于一行并且 NEXTID 变量未分配给。
您可以尝试使用最新版本的 HSQLDB 直接赋值:
SET NEXTID = NEXT VALUE FOR MY_SEQUENCE
对于旧版本的 HSQLDB,您需要有一个只有一行的 table 和此 table 中的 select 以分配给序列。当设置了 Oracle 兼容模式时,可以使用 DUAL table。否则用一行创建你自己的 table。
SELECT NEXT VALUE FOR MY_SEQUENCE INTO NEXTID FROM DUAL;