我需要在Oracle DB中更改sequnce名称,但我不能使用重命名(不需要为epxlain做原因)。我试图删除它并创建一个具有不同名称的新的。但是我需要将序列值设置为max(id)+1。我正在尝试这些命令:
CREATE SEQUENCE seq_test START WITH
( SELECT MAX(id) FROM test_table
)
INCREMENT BY 1 MINVALUE 100000 MAXVALUE 9223372036854775807 NOCACHE;
CREATE SEQUENCE seq_test START WITH
to_number( SELECT MAX(id) FROM test_table
)
INCREMENT BY 1 MINVALUE 100000 MAXVALUE 9223372036854775807 NOCACHE;
对于我得到的两种情况 SQL错误:ORA-01722:无效的数字
答案 0 :(得分:2)
你需要动态的sql。
DECLARE
seq_id INTEGER;
BEGIN
SELECT MAX (id) INTO seq_id FROM test_table;
EXECUTE IMMEDIATE
'CREATE SEQUENCE seq_test
START WITH '
|| seq_id
|| ' INCREMENT BY 1 MINVALUE 100000 MAXVALUE 9223372036854775807 NOCACHE';
END;
/