我想将查询结果设置为minvalue

时间:2009-07-21 07:34:54

标签: oracle10g

让我们考虑一下 该查询的结果可能是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?

1 个答案:

答案 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创建,而不是正增量。