发布
社区首页 >问答首页 >使用两个子查询的结果更改Oracle序列

使用两个子查询的结果更改Oracle序列
EN

Stack Overflow用户
提问于 2020-07-11 06:03:26
回答 2查看 171关注 0票数 2

我正在尝试用两个子查询的结果来改变一个序列。我是Oracle的新手,并且坚持使用语法。如果可以,请帮我解决这个问题:

代码语言:javascript
代码运行次数:0
复制
alter sequence COM_UPDN_BASE_FRMT_DTL_SEQ increment by ( (select max(id) from COM_UPDN_BASE_FRMT_DTL) - (select last_number from all_sequences where sequence_name = 'COM_UPDN_BASE_FRMT_DTL_SEQ') ) ;

在执行此命令时,我收到一个“无效编号”错误。这里我漏掉了什么?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-07-11 06:58:50

您肯定需要PL/SQL和dynamic SQL,但不要使用LAST_NUMBER。

试试下面这样的代码:

代码语言:javascript
代码运行次数:0
复制
DECLARE
    l_max NUMBER;
    l_curr_seq_val NUMBER;
    l_new_seq_val NUMBER;
    l_curr_inc_bv number;
BEGIN
    --Get max value from table
    SELECT max(id) INTO l_max FROM COM_UPDN_BASE_FRMT_DTL;
    --get current value from seq and current increment_by from dba_sequences
    SELECT com_updn_base_frmt_dtl_seq.nextval,increment_by INTO l_curr_seq_val,l_curr_inc_bv FROM dba_sequences WHERE sequence_name = 'COM_UPDN_BASE_FRMT_DTL_SEQ' and sequence_owner=USER;
    --If there is a difference, do the fix
    if (l_curr_inc_bv != l_max-l_curr_seq_val) then
        EXECUTE IMMEDIATE
        'ALTER SEQUENCE com_updn_base_frmt_dtl_seq INCREMENT BY ' || (l_max - l_curr_seq_val);
        SELECT com_updn_base_frmt_dtl_seq.nextval INTO l_new_seq_val from dual;
        EXECUTE IMMEDIATE
        'ALTER SEQUENCE com_updn_base_frmt_dtl_seq INCREMENT BY ' || (l_curr_inc_bv);
    end if;
END;
/
票数 1
EN

Stack Overflow用户

发布于 2020-07-11 06:27:36

您应该尝试使用变量和动态sql:

代码语言:javascript
代码运行次数:0
复制
DECLARE 
    l_max NUMBER(5,0);
    l_last NUMBER(5,0);
BEGIN
    SELECT max(id) INTO l_max FROM COM_UPDN_BASE_FRMT_DTL;
    SELECT last_number INTO l_last FROM all_sequences WHERE sequence_name = 'COM_UPDN_BASE_FRMT_DTL_SEQ';
    
    EXECUTE IMMEDIATE
    'ALTER SEQUENCE com_updn_base_frmt_dtl_seq INCREMENT BY ' || (l_max - l_last);
END;
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62842907

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档