gpt4 book ai didi

sql - 手动转发序列 - oracle sql

转载 作者:行者123 更新时间:2023-12-02 04:41:38 25 4
gpt4 key购买 nike

我需要转发一组仅具有 DML 访问权限的序列。由于一段代码中的错误,在没有序列的情况下而是手动获取了多个值,因此现在序列正在复制这些值。因此,我想将序列推到最大值,以便下次调用 nextval 时,它给出的值高于最大值。我有大约 50 个序列,每个序列都必须前进几千个。

仅通过 DML 访问就可以实现这一点吗?如果是这样,我该怎么办?

最佳答案

您应该确定序列的下一个值与所需值之间的差异。所需的值通常是主键列的最大值(我们将其命名为 ID)。

DECLARE
maxid NUMBER;
maxseq NUMBER;
temp NUMBER; -- without this variable Oracle would skip to query the sequence
BEGIN
SELECT MAX(ID) INTO maxid FROM MYTABLE;
SELECT MYSEQ.NEXTVAL INTO maxseq FROM DUAL;
FOR i IN maxseq .. maxid LOOP
SELECT MYSEQ.NEXTVAL INTO temp FROM DUAL;
END LOOP;
END;
/

关于sql - 手动转发序列 - oracle sql,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9609463/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com