« プリングルス クラッシュドペッパー味 | メイン | バーミヤン 沼田インター店 / 群馬県沼田市・中華ファミレス »

2008年3月21日

ADO + ORACLE SEQUENCE で値が2ずつ増える

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を使用するときは、パラメータを変えないとだめそうですね。

↓クリックして頂けるとうれしいです(ワンクリック詐欺ではないです(笑))
banner_03人気blogランキングへ
にほんブログ村 地域生活ブログ 群馬情報へ にほんブログ村 サッカーブログ 少年サッカーへ にほんブログ村 IT技術ブログへ 日本ブログ村へ

投稿者 danna : 2008年3月21日 12:54

トラックバック

このエントリーのトラックバックURL:
http://www.namibuta.net/cgi-bin/mt/mt-tb.cgi/836

コメント

コメントしてください




保存しますか?