フェッチ順序が無効ですと表示
- このフォーラムに新しいトピックを立てることはできません
- このフォーラムではゲスト投稿が禁止されています
mutsumi
投稿数: 19

お世話になります
Magic v10でOracle v10を使いv9plusのPervasiveからアップグレードテストしています。バッチプログラムを起動させると「フェッチ順序が無効です」と表示されてます。これはどんな場合におきるのでしょうか、それと回避方法ご存知の方ご教授ください
Magic v10でOracle v10を使いv9plusのPervasiveからアップグレードテストしています。バッチプログラムを起動させると「フェッチ順序が無効です」と表示されてます。これはどんな場合におきるのでしょうか、それと回避方法ご存知の方ご教授ください
投票数:0
平均点:0.00
ISHIJIMA
居住地: 静岡県
投稿数: 1827

フェッチ順序が無効ですで検索すると下記のような情報が得られます。
トランザクションが関係しているのでしょうか?
回答になっていなくて申し訳ありません。
ORA-01002: フェッチ順序が無効です。 原因: 無効なカーソルからフェッチを実行しようとしたことが原因です。 また、PL/SQLカーソル・ループで暗黙的にフェッチが実行された場合にも、このエラーが発生することがあります。 その他にも、次のような原因が想定されます。1) 最後の行が取得されORA-1403エラーが戻された後に、カーソルからフェッチを実行しようとしました。 2) カーソルがFOR UPDATE句によってオープンされた場合に、COMMIT文の発行後にフェッチを実行するとエラーが戻されます。3) SQL文内でプレースホルダを再バインドした後、その文を再実行する前にフェッチを実行しました。
処置: 1) 最後の行の取得後にフェッチを実行しないでください。フェッチ可能な行がありません。2) FOR UPDATE句によってオープンされたカーソルのフェッチ・ループ内ではCOMMIT文を発行しないでください。3) 再バインド後に文を再実行してからフェッチを実行しなおしてください。
トランザクションが関係しているのでしょうか?
回答になっていなくて申し訳ありません。
ORA-01002: フェッチ順序が無効です。 原因: 無効なカーソルからフェッチを実行しようとしたことが原因です。 また、PL/SQLカーソル・ループで暗黙的にフェッチが実行された場合にも、このエラーが発生することがあります。 その他にも、次のような原因が想定されます。1) 最後の行が取得されORA-1403エラーが戻された後に、カーソルからフェッチを実行しようとしました。 2) カーソルがFOR UPDATE句によってオープンされた場合に、COMMIT文の発行後にフェッチを実行するとエラーが戻されます。3) SQL文内でプレースホルダを再バインドした後、その文を再実行する前にフェッチを実行しました。
処置: 1) 最後の行の取得後にフェッチを実行しないでください。フェッチ可能な行がありません。2) FOR UPDATE句によってオープンされたカーソルのフェッチ・ループ内ではCOMMIT文を発行しないでください。3) 再バインド後に文を再実行してからフェッチを実行しなおしてください。
投票数:0
平均点:0.00
tiyn
投稿数: 70

Oracle側のデータリポジトリで
データ特性の
更新レコードの識別を位置にして
キャッシュ範囲も位置
あと、SQLタブの方の位置をROWIDに変えても駄目ですか?
キャッシュの中身が更新されるような時にでるエラーだったと思いますが
データ特性の
更新レコードの識別を位置にして
キャッシュ範囲も位置
あと、SQLタブの方の位置をROWIDに変えても駄目ですか?
キャッシュの中身が更新されるような時にでるエラーだったと思いますが
投票数:0
平均点:0.00
pu_mahalo
居住地: 大阪
投稿数: 775

こんにちは Puです
皆さんが回答されているとううりです
遅延トランを使ってられないでしょうか?
もしそうだとしたら
楽観的ロックなので
更新レコードの識別を意識して
プログラムを作成しなければ フェッチエラーが出る可能性が
あります
物理トランで問題ないのなら
物理トランでの運用をお勧めします
皆さんが回答されているとううりです
遅延トランを使ってられないでしょうか?
もしそうだとしたら
楽観的ロックなので
更新レコードの識別を意識して
プログラムを作成しなければ フェッチエラーが出る可能性が
あります
物理トランで問題ないのなら
物理トランでの運用をお勧めします
投票数:0
平均点:0.00
mutsumi
投稿数: 19

遅延ではなく、物理で作成しているのですが・・・
物理の場合、どんな作成を行うと、このような現象が発生するのでしょうか。
物理の場合、どんな作成を行うと、このような現象が発生するのでしょうか。
投票数:0
平均点:0.00
mutsumi
投稿数: 19

皆さんありがとうございました。
自己解決しました。ちょっとした設定ミスでした
自己解決しました。ちょっとした設定ミスでした
投票数:0
平均点:0.00
ISHIJIMA
居住地: 静岡県
投稿数: 1827

参考にどんなミスだったか報告してもらうと同じ間違いをした場合の参考になると思います。
投票数:0
平均点:0.00
mutsumi
投稿数: 19

解決方法を記入していませんでした。
年月を入力して実行ボタンを押すだけの単純なタスクの
タスク特性のデータタブの設定を以下のように変更しました。
トランザクション開始 L=レコードロック時 =>なし
ロック方式 O=入力時 =>なし
Pervasiveでは上記の設定で実行上問題なかったのですが・・・
Oracleで開発するの初めてなので、作法がわからず四苦八苦してます。これからもわからないことお尋ねしますが、皆様よろしくお願いします
年月を入力して実行ボタンを押すだけの単純なタスクの
タスク特性のデータタブの設定を以下のように変更しました。
トランザクション開始 L=レコードロック時 =>なし
ロック方式 O=入力時 =>なし
Pervasiveでは上記の設定で実行上問題なかったのですが・・・
Oracleで開発するの初めてなので、作法がわからず四苦八苦してます。これからもわからないことお尋ねしますが、皆様よろしくお願いします
投票数:0
平均点:0.00