VBAからオラクルのSEQUENCEに対し、 .NEXTVALを発行するとなぜか2づつ値が増えていく事象が発生。
SQL*Plusから実行すると1ずつしか増えない。
CREATE文は下記の通り。
CREATE SEQUENCE SEQ_TEST
INCREMENT BY 1
MINVALUE 1
MAXVALUE 99999999
START WITH 1
NOCACHE
CYCLE
ORDER;
「INCREMENT BY 1」で増分値を1にしているし、「NOCACHE」も指定しているので飛ぶこともないし・・・。
おかしいなと思っていたらこちらのサイトでヒントを見つけました。→「電撃羊の‘あしあと’」
oo4oで接続したとき、やはり2個飛びになるとのこと。これをヒントに下記の通りのパラメータとして正常に動作する様になりました。
Dim rst As
ADODB.Recordset
Dim strSQL As String
Set rst = New ADODB.Recordset
strSQL = "SELECT SEQ_TEST.NEXTVAL FROM
DUAL"
rst.Open strSQL, GetRDBConnection(),
adOpenStatic, adLockReadOnly
修正前はそれぞれ「adOpenDynamic」「adLockOptimistic」を使用していました。
SEQUENCEを使用するときは、パラメータを変えないとだめそうですね。
↓クリックして頂けるとうれしいです(ワンクリック詐欺ではないです(笑))
人気blogランキングへ
日本ブログ村へ