[リストへもどる]
一括表示

投稿時間:2003/02/20(Thu) 16:58
投稿者名:
Eメール:
URL :
タイトル:
oo4oで、sequenceの値をとりたい
いつもお世話になってます。
早速ですが、質問させていただきます

現在oo4oでOracleと接続しており、

Global GobjDB       As Object   '接続
Dim objDyna As Object
'seqは1ずつカウントされるSEQUENCE
strSQL = "select seq.nextval from dual"
Set objDyna = GobjDB.DBCreateDynaset(strSQL, 0&)

このようにして発行したSEQUENCEの値を取りたいのですが、
なぜか1回発行するごとに2ずつ増えているのです。
SQL*Plusなどで同じSQL文を発行するとちゃんと1ずつ増えているのですが、
どなたか情報をお持ちの方いらっしゃいましたら、
ご教授いただけないでしょうか?

投稿時間:2003/02/21(Fri) 03:24
投稿者名:魔界の仮面弁士
Eメール:
URL :
タイトル:
Re: oo4oで、sequenceの値をとりたい
> なぜか1回発行するごとに2ずつ増えているのです。

う〜ん。何故でしょう。
(私は今のところ、2回インクリメントされるような現象に出会った事はありません)

もしかしたら、Optionsをきちんと設定していないのが問題なのかもしれません。

現在、手元に環境が無いので検証できませんが、私がCreateDynasetを使う場合、
ORADYN_DEFAULTを指定する事はほとんど無く、大抵、Optionsの値として
[読込専用]・[キャッシュ不要]・[空白を削除しない]のフラグを指定して開くようにしています。


<追記>
  上記の投稿のあと、googleにて『CreateDynaset nextval』という
  キーワードで検索してみたところ、以下のページが見つかりました。
  やはり、Optionsをきちんと指定していないのが原因みたいですね。
  http://www.ashisuto.co.jp/standard/faq/past/st58_23a.html
</追記>

投稿時間:2003/02/25(Tue) 11:48
投稿者名:
Eメール:
URL :
タイトル:
Re^2: oo4oで、sequenceの値をとりたい
魔界の仮面弁士さんレスありがとうございますっ

なるほど〜、取得するときに読込み専用の指定をしないとだめみたいですね
これを参考に、取得するときに
Set objDyna = GobjDB.DBCreateDynaset(strSQL, 0&)
としていたのを
Set objDyna = GobjDB.DBCreateDynaset(strSQL, 4&)
とすることでちゃんと1ずつ増えました。
魔界の仮面弁士さんありがとうございます。