2017-07-26 2 views
0

test_seqという名前のSEQUENCEがあります。 ALTER文で:オラクル: "ALTER"ステートメントで関数を使用する方法

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! 

は、私は(TO_NUMBER()またはTO_CHAR()のような)関数を使用することができますか?

答えて

2

Noとすることはできません。鉄道図はそれを認めていない。

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.NEXTVALMINVALUE下回るとインスタンス化することはできません

関連する問題