oracle:如何在"ALTER"语句中使用函数



有一个名为test_seq的序列。

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()(吗?

不,你不能。铁路图不允许这样做。

您可以使用块中的 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 块。

  • 请谨慎使用序列增量。您可能会得到以下内容 错误,如果它低于序列的最小值。

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

相关内容

  • 没有找到相关文章