让我们考虑一下 该查询的结果可能是22 即,(从table_screen中选择max(screen_id)+1)= 22
create sequence SEQ_TEST
minvalue SELECT MAX(SCREEN_ID)+1 FROM TABLE_SCREEN
start with 25
maxvalue 999999999999999999999999999
increment by 1
nocache;
如何将查询结果按顺序设置为minvalue?
答案 0 :(得分:1)
您可以像这样使用动态SQL:
编辑:现在经过测试的代码
--Test setup
create table table_screen ( screen_id INTEGER NOT NULL);
/
insert into table_screen values (1);
/
insert into table_screen values (10);
/
insert into table_screen values (21);
新区块
DECLARE
MinVal INTEGER;
BEGIN
SELECT MAX(SCREEN_ID)+1 INTO MinVal FROM table_screen;
EXECUTE IMMEDIATE 'CREATE SEQUENCE seq_test START WITH ' || MinVal;
END;
/
我删除了额外的参数,只是为了保持小。
另请注意:根据我最喜欢的Oracle help guy,当增量为负时使用MINVALUE,所以我交换代码以使用START WITH创建,而不是正增量。