关于Oracle序列的问题

发布于 2024-12-05 14:00:57 字数 453 浏览 0 评论 0原文

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

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. 序列创建中的start with子句。我用得对吗?或者我可以用任何数字替换它?

We already have a sequence in the database, now I have to modify that sequence so that i start from a specific value which i will be fetching from the db. I have written following code

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;
/

I have following questions.

  1. Do i have to drop old sequence first or oracle will do it by itself?
  2. The start with clause in sequence creation. Am i using it right? or i can replace it with any number?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

薆情海 2024-12-12 14:00:57

是的,如果序列已经存在,您需要删除它。没有“创建或替换序列”选项。

是的,您正确使用了 STARTWITH 子句。由于序列已声明为 NOCYCLE,因此无需指定 MINVALUE。

Yes, you would need to drop the sequence if it already exists. There is no CREATE OR REPLACE SEQUENCE option.

Yes, you are using the START WITH clause correctly. There is no need to specify a MINVALUE since the sequence is declared NOCYCLE.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文