oracle:如何使用" ALTER"声明

时间:2017-07-26 02:36:27

标签: oracle oracle11g

有一个名为 test_seq 的SEQUENCE。

SELECT TO_NUMBER('-'||TO_CHAR(test_seq.currval)) from DUAL;   // can work

ALTER SEQUENCE test_seq INCREMENT BY TO_NUMBER('-'||TO_CHAR(test_seq.currval)); // wrong!

我可以在 ALTER 语句中使用函数(例如:TO_NUMBER()TO_CHAR())吗?

2 个答案:

答案 0 :(得分:2)

No,你做不到。铁路图不允许它。

答案 1 :(得分:0)

您可以使用EXECUTE IMMEDIATE语句在块中完成它,如图所示。

DECLARE
  next_increment NUMBER := TO_NUMBER('-'||TO_CHAR(test_seq.currval));
BEGIN
  EXECUTE IMMEDIATE 'ALTER SEQUENCE test_seq INCREMENT BY '||next_increment;
END;
/

但请确保 -

  • 在执行此操作之前至少运行了一次test_seq.nextval 块。

  • 谨慎使用序列增量。您可能会得到以下内容 如果它低于序列的MINVALUE则出错。

    ORA-08004:序列TEST_SEQ.NEXTVAL低于MINVALUE且无法实例化