oracle:如何在“中使用函数”;改为;陈述
有一个名为test_seq的序列oracle:如何在“中使用函数”;改为;陈述,oracle,oracle11g,Oracle,Oracle11g,有一个名为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())吗?,您不能。铁路图不允许这样做。,你不能。铁路图不
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 街区
- 小心使用序列增量。您可能会得到以下结果
如果低于序列的最小值,则出错
sequenceORA-08004:
位于TEST\u SEQ.NEXTVAL
下方,无法实例化MINVALUE
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 街区
- 小心使用序列增量。您可能会得到以下结果
如果低于序列的最小值,则出错
sequenceORA-08004:
位于TEST\u SEQ.NEXTVAL
下方,无法实例化MINVALUE