我需要在 Oracle DB 中更改序列名称,但我不能使用重命名(无需执行 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;
Run Code Online (Sandbox Code Playgroud)
对于这两种情况,我都收到 SQL Error: ORA-01722: invalid number
你需要动态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;
/
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2160 次 |
| 最近记录: |