关于Oracle序列的问题

时间:2011-09-20 18:20:28

标签: oracle plsql oracle11g sequence

我们已经在数据库中有一个序列,现在我必须修改该序列,以便从一个特定的值开始,我将从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;
/

我有以下问题。

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

1 个答案:

答案 0 :(得分:7)

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

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