关于Oracle序列的问题

x.5*_*509 2 oracle plsql sequence oracle11g

我们已经在数据库中有一个序列,现在我必须修改该序列,以便从一个特定的值开始,我将从db中获取.我写了以下代码

DECLARE
  i_Seq   INTEGER;
BEGIN
  SELECT MAX (col_id) + 1 INTO i_Seq from Table;

  EXECUTE IMMEDIATE 'CREATE SEQUENCE SEQHDR MINVALUE '|i_Seq|' MAXVALUE 999999999999999999999999999 INCREMENT BY 1 START WITH '|i_Seq|' CACHE 20 NOORDER NOCYCLE'
END;
/
Run Code Online (Sandbox Code Playgroud)

我有以下问题.

  1. 我是否必须首先删除旧序列,否则oracle会自行完成它?
  2. 序列创建中的start with子句.我使用它吗?或者我可以用任何数字替换它?

Jus*_*ave 7

是的,如果序列已存在,则需要删除序列.没有CREATE OR REPLACE SEQUENCE选项.

是的,您正在使用START WITH子句.由于序列被声明为NOCYCLE,因此无需指定MINVALUE.