HSQLDB:将 SEQUENCE 的计数器增加 N
HSQLDB: raise the counter of a SEQUENCE by N
在 HSQLDB 中,我尝试将序列的计数器增加 N。当 N > 1 时,我找不到任何示例说明如何做到这一点,所以我尝试调用 NEXT VALUE FOR my_sequence
N 次,但是也没有成功。
例如:
DROP PROCEDURE IF EXISTS my_procedure;
CREATE PROCEDURE my_procedure(OUT my_output INTEGER, OUT out_a_1 INTEGER, OUT out_a_2 INTEGER, OUT out_a_3 INTEGER, IN my_input INTEGER)
MODIFIES SQL DATA -- NO SQL
BEGIN ATOMIC
DECLARE a_1 BIGINT;
DECLARE a_2 BIGINT;
DECLARE a_3 BIGINT;
SET my_output = my_input;
SET a_1 = NEXT VALUE FOR my_sequence;
SET a_2 = NEXT VALUE FOR my_sequence;
SET a_3 = NEXT VALUE FOR my_sequence;
SET out_a_1 = a_1;
SET out_a_2 = a_2;
SET out_a_3 = a_3;
END;
结果:计数器仅增加 1,因此 out_a_1 == out_a_2 == out_a_3
是否可以一次将计数器加N?
如果不行,有什么办法?
您需要将序列值插入 table。每行插入都会增加序列。
DECLARE TABLE T (ID INT)
INSERT INTO T VALUES (NEXT VALUE FOR my_sequence), (NEXT VALUE FOR my_sequence)
以上示例可用于将序列递增 2。
在 HSQLDB 中,我尝试将序列的计数器增加 N。当 N > 1 时,我找不到任何示例说明如何做到这一点,所以我尝试调用 NEXT VALUE FOR my_sequence
N 次,但是也没有成功。
例如:
DROP PROCEDURE IF EXISTS my_procedure;
CREATE PROCEDURE my_procedure(OUT my_output INTEGER, OUT out_a_1 INTEGER, OUT out_a_2 INTEGER, OUT out_a_3 INTEGER, IN my_input INTEGER)
MODIFIES SQL DATA -- NO SQL
BEGIN ATOMIC
DECLARE a_1 BIGINT;
DECLARE a_2 BIGINT;
DECLARE a_3 BIGINT;
SET my_output = my_input;
SET a_1 = NEXT VALUE FOR my_sequence;
SET a_2 = NEXT VALUE FOR my_sequence;
SET a_3 = NEXT VALUE FOR my_sequence;
SET out_a_1 = a_1;
SET out_a_2 = a_2;
SET out_a_3 = a_3;
END;
结果:计数器仅增加 1,因此 out_a_1 == out_a_2 == out_a_3
是否可以一次将计数器加N?
如果不行,有什么办法?
您需要将序列值插入 table。每行插入都会增加序列。
DECLARE TABLE T (ID INT)
INSERT INTO T VALUES (NEXT VALUE FOR my_sequence), (NEXT VALUE FOR my_sequence)
以上示例可用于将序列递增 2。