[Seasar-user:14701] Re: [DBflute]外だしSQLのカーソル検索でフェッチエラー

kubo [E-MAIL ADDRESS DELETED]
2008年 6月 15日 (日) 23:58:06 JST


久保です。

>>現象の確認ですが、
>>カーソル検索で利用しているトランザクションを
>>フェッチ途中で「コミット」していることで、
>>ORA-01002が発生しているのではないでしょうか?
>>(コミット後にフェッチを続行したため)
> →コミット後に再度トランザクションを開始させて
> フェッチを続行しています。

了解です。
カーソル検索で利用しているトランザクションを
途中でコミットして、再度トランザクションを
開始してフェッチを続行しているということですね。

すいません、そもそもそういったトランザクションの使い方は
許されているものでしょうか?(自分の知識不足かもしれません...)
試したことがないのですが、その再度開始したトランザクションと
カーソル検索のResultSetは関連付くのかどうかが気になりました。
カーソル検索のResultSetは最初のトランザクションのコミットで
終わっているようにも思えます。

カーソル検索自体をトランザクションから外すことは
要件的にできないのでしょうか?


2008/6/15  <[E-MAIL ADDRESS DELETED]>:
> 久保様、お返事ありがとうございます。
>
>>現象の確認ですが、
>>カーソル検索で利用しているトランザクションを
>>フェッチ途中で「コミット」していることで、
>>ORA-01002が発生しているのではないでしょうか?
>>(コミット後にフェッチを続行したため)
> →コミット後に再度トランザクションを開始させて
> フェッチを続行しています。
>
>
>>久保です。
>>
>>mackeyさん、こんばんは
>>
>>> AUTOCOMMIT=trueにすればエラーを回避できるみたいなのですが
>>> AUTOCOMMIT=trueにする方法がありますか?
>>は、トランザクションを開始していなければそうなります。
>>(この場合だと、UserTransactionも何も使わずにそのまま実行すると)
>>
>>現象の確認ですが、
>>カーソル検索で利用しているトランザクションを
>>フェッチ途中で「コミット」していることで、
>>ORA-01002が発生しているのではないでしょうか?
>>(コミット後にフェッチを続行したため)
>>
>>2008/6/13  <[E-MAIL ADDRESS DELETED]>:
>>>
>>> お世話になります。
>>> mackeyです。
>>>
>>> 現在、外だしSQLのカーソル検索を使用して別テーブルにINSERTを行うバッチを開発しています。
>>> その際、カーソル検索を行うSQLにはFOR UPDATE句を使いロックを掛け、
>>> トランザクション(UserTransaction)を明示的に記述して実行しています。
>>> カーソル検索中に指定件数に到達したらコミットを実行していきたいのですが
>>> コミットを行った後のフェッチを行った所でエラーが発生します。
>>> エラーの内容は"ORA-01002: フェッチ順序が無効です。"になります。
>>> AUTOCOMMIT=trueにすればエラーを回避できるみたいなのですが
>>> AUTOCOMMIT=trueにする方法がありますか?
>>> AUTOCOMMIT=trueにできない場合はどのようにすればよいのでしょうか?
>>>
>>> 宜しくお願いします。
>>>
>>> Seasar2.4.24
>>> S2Dao1.0.47
>>> DBflute0.7.2
>>> oracle9i
>>> _______________________________________________
>>> Seasar-user mailing list
>>> [E-MAIL ADDRESS DELETED]
>>> https://ml.seasar.org/mailman/listinfo/seasar-user
>>>
> _______________________________________________
> Seasar-user mailing list
> [E-MAIL ADDRESS DELETED]
> https://ml.seasar.org/mailman/listinfo/seasar-user
>


Seasar-user メーリングリストの案内