【问题标题】:Oracle change increment_by on a sequenceOracle 在序列上更改 increment_by
【发布时间】:2016-12-15 20:09:18
【问题描述】:
ALTER SEQUENCE my_sequence
    INCREMENT BY '1000000000' - TO_NUMBER(SELECT last_number FROM all_sequences WHERE sequence_name='my_sequence');

有人可以向我解释为什么它会抛出“错误号码”吗?我尝试将TO_NUMBER 放在任何地方,我尝试完全不使用它,我尝试在大数字上不使用'',我能想到的每个组合,仍然是错误,对我来说根本没有任何意义。子查询有效,我检查了。

【问题讨论】:

  • 不能使用程序。
  • 您不能有increment by 的表达式。您还应该在那里指定数字 '1000000000' 是一个字符串,而不是一个数字。您也不能将完整的 SQL 查询传递给to_number()。即使您可以使用查询 increment by 调用 to_number() 也完全没用,因为 last_number 已经是一个数字,没有必要将其转换为数字

标签: sql oracle ddl database-sequence


【解决方案1】:

改用 pl/sql 块:

DECLARE
    INC NUMBER;
BEGIN
    SELECT  1000000000 - LAST_NUMBER
    INTO    INC
    FROM    USER_SEQUENCES 
    WHERE   SEQUENCE_NAME='my_sequence';

    EXECUTE IMMEDIATE 'ALTER SEQUENCE my_sequence INCREMENT BY '||INC;
END;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-19
    • 2020-09-06
    • 2017-12-18
    相关资源
    最近更新 更多