Oracleでシーケンスを作成する
Oracleでシーケンスを作成するには、CREATE SEQUENCE文を使用します。
CREATE OR REPLACE SEQUENCE シーケンス名 START WITH 1 INCREMENT BY 1 MINVALUE 1 MAXVALUE 999 CYCLE NOCACHE
cycleを指定するとmaxvalueに到達すると、minvalueから割り当てられるように循環します。
権限が不足している場合は、CREATE SEQUENCE権限を付与します。
C:\Users\test>sqlplus /nolog SQL*Plus: Release 11.2.0.2.0 Production on 木 9月 1 19:37:31 2016 Copyright (c) 1982, 2010, Oracle. All rights reserved. SQL> conn / as sysdba 接続されました。 SQL> GRANT CREATE ANY SEQUENCE TO USER002; 権限付与が成功しました。 SQL>
シーケンスを使ってみます。
SELECT SEQ01.CURRVAL FROM DUAL;
すると「ORA-08002: 順序SEQ01.CURRVALはこのセッションではまだ定義されていません」とエラーが出ました。これはNEXTVALをしていないからで、NEXTVALをまずしてみます。
SELECT SEQ01.NEXTVAL FROM DUAL;
結果は以下のようになります。
1
次にCURRVALをしてみます。
SELECT SEQ01.CURRVAL FROM DUAL;
結果は以下のようになります。
1
以下ALTER文でNOORDERを指定します。
ALTER SEQUENCE SEQ01 INCREMENT BY 1 MINVALUE 1 MAXVALUE 10 CYCLE NOCACHE NOORDER
NOORDERを指定することにより、採番は順序通りにはならなくなります。このへんはキャッシュと関係があるようです。
KHI入社して退社。今はCONFRAGEで正社員です。関西で140-170/80~120万から受け付けております^^
得意技はJS(ES6),Java,AWSの大体のリソースです
コメントはやさしくお願いいたします^^
座右の銘は、「狭き門より入れ」「願わくは、我に七難八苦を与えたまえ」です^^
コメント