オラクルのDBで環境はUNIX(IBMのマシン)です。
DBについて詳しくありませんが、以下のようなことを行いたいと考えています。
1.あるDB(DB-A)のレコードを特定のキーの昇順に全レコード読み込む。(特定のキーは、例えば商品コードなど)
2.1レコードを読み込む毎に、他のDB(DB-B)を読み込んだレコードを元に、更新したい。
その際、1レコードを読み込む都度、
2-1.トランザクションの開始
2-2.DB-Bの更新
2-3.コミット又はロールバック
のようにしたい。
上記のことを考えて以下のような作りにしました。
1.カーソルのオープン
2.以下のループを作成
2-1.DB-Aから1レコードのフェッチ
2-2.トランザクションの開始
2-3.DB-Bの更新
2-4.コミット(ロールバック)
しかしながら、コミット(又はロールバック)を行うことにより、カーソルがクローズされてしまい、最初の位置にカーソルが戻ってしまいます。(私がコーディングして試験したわけではありません。このような報告をうけました)
それで、カーソルが戻らずに、全レコードを処理するようにしたいのですが、どのようにしたら良いのでしょうか。ご存じの方おりましたらアドバイスをお願いします。
No.1ベストアンサー
- 回答日時:
こんにちは。
私が経験した中ではフェッチをするテーブルに対して[for update]している場合に途中でコミット処理を行うとカーソルが破壊される現象がありました。
ご質問の現象はDB-Aに対してupdateはしていないようなので原因は違うところにあるかも知れませんので、取り敢えず以下のチェックを行ってみて下さい。
1.コミット処理を全てのレコードが処理された後に行ってみる。
2.ループの中にカーソルのオープン処理が入っていないか確認。
3.SQLエラー時(Null Getも含み)にカーソルのオープンまで処理が戻らないか確認。
考えれるのはこれくらいですかね。
上記[1.]の処理で正常に動作するようであればそれで良いと思います。
但し、この場合にはロールバックセグメントにかなり余裕が必要(大きく定義する)になりますのでご注意ください。
余談ですが、1件毎にコミット処理を行うのは非常に効率がよくないと思います。
ではでは・・・
返事が送れて申し訳ありませんでした。結局本件は、「オラクルの仕様としてそのようなことはやってはいけないことになっている」という結論に至り、質問に書いたようなやり方を採用しないことで、決着がつきました。しかしながら、回答を拝見すると、「仕様としてできないことはなく、出来るはず」のように思われますので、自分で機会があれば、確認してみます。ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Access(アクセス) DoCmd.SearchForRecord が動かない時の解決方法 3 2022/07/22 15:31
- Visual Basic(VBA) ExcelからAccessのテーブルに書き込む時に時間がかかる 1 2022/10/14 20:38
- Access(アクセス) docmd.gotorecordを起動するには 5 2022/06/17 15:20
- MySQL PHP 画像のアップロード Qiita 2 2022/11/28 04:44
- その他(データベース) ORMについて 1 2022/06/18 10:07
- IT・エンジニアリング ドメイン駆動設計の値オブジェクトについて質問 1 2023/05/13 02:50
- スピーカー・コンポ・ステレオ 再生周波数を測定できるアプリを探しています。 質問失礼しますm(*_ _)m 現在、レコードやハイレ 4 2022/06/27 10:31
- CGI perlで書いたcgiでsqliteの使い方を教えてください 2 2023/05/08 21:29
- Excel(エクセル) アウトラインの小計のやり方 1 2023/03/20 11:51
- その他(データベース) pythonでsqlight勉強中、クエリー結果の利用法教えて下さい 1 2022/04/28 20:38
このQ&Aを見た人はこんなQ&Aも見ています
-
10代と話して驚いたこと
先日10代の知り合いと話した際、フロッピーディスクの実物を見たことがない、と言われて驚きました。今後もこういうことが増えてくるのかと思うと不思議な気持ちです。
-
これ何て呼びますか
あなたのお住いの地域で、これ、何て呼びますか?
-
初めて自分の家と他人の家が違う、と意識した時
子供の頃、友達の家に行くと「なんか自分の家と匂いが違うな?」って思いませんでしたか?
-
いけず言葉しりとり
はんなりと心にダメージを与える「いけず言葉」でしりとりをしましょう。 「あ」あら〜しゃれた服着てはりますな 遠くからでもわかりましたわ
-
好きな和訳タイトルを教えてください
洋書・洋画の素敵な和訳タイトルをたくさん知りたいです!【例】 『Wuthering Heights』→『嵐が丘』
-
Oracle SQLにて固定長でデータをselectする方法
Oracle
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・【大喜利】【投稿~11/22】このサンタクロースは偽物だと気付いた理由とは?
- ・お風呂の温度、何℃にしてますか?
- ・とっておきの「まかない飯」を教えて下さい!
- ・2024年のうちにやっておきたいこと、ここで宣言しませんか?
- ・いけず言葉しりとり
- ・土曜の昼、学校帰りの昼メシの思い出
- ・忘れられない激○○料理
- ・あなたにとってのゴールデンタイムはいつですか?
- ・とっておきの「夜食」教えて下さい
- ・これまでで一番「情けなかったとき」はいつですか?
- ・プリン+醤油=ウニみたいな組み合わせメニューを教えて!
- ・タイムマシーンがあったら、過去と未来どちらに行く?
- ・遅刻の「言い訳」選手権
- ・好きな和訳タイトルを教えてください
- ・うちのカレーにはこれが入ってる!って食材ありますか?
- ・おすすめのモーニング・朝食メニューを教えて!
- ・「覚え間違い」を教えてください!
- ・とっておきの手土産を教えて
- ・「平成」を感じるもの
- ・秘密基地、どこに作った?
- ・【お題】NEW演歌
- ・カンパ〜イ!←最初の1杯目、なに頼む?
- ・一回も披露したことのない豆知識
- ・これ何て呼びますか
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・これ何て呼びますか Part2
- ・許せない心理テスト
- ・この人頭いいなと思ったエピソード
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・好きなおでんの具材ドラフト会議しましょう
- ・餃子を食べるとき、何をつけますか?
- ・あなたの「必」の書き順を教えてください
- ・ギリギリ行けるお一人様のライン
- ・10代と話して驚いたこと
- ・大人になっても苦手な食べ物、ありますか?
- ・14歳の自分に衝撃の事実を告げてください
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
カーソルを使って、最終行レコ...
-
カーソル0件の時にエラーを発生...
-
処理件数を非表示にしたい
-
クエリの実行時間の目安
-
ACCESSで一括処理する方法
-
カーソルオープンの処理について
-
SELECT と INSERT の速度
-
(x 行処理されました)を表示さ...
-
データ型でFloatとreal の計算...
-
わり算の結果が整数でも小数点...
-
300万件のデータの処理について
-
PL/SQL で continue ?
-
ストアドプロシージャ_カーソル...
-
SQLServer2008パフォーマンスUP...
-
NVLとDECODEのスピード差
-
カーソルがコミットするとクロ...
-
CでSQLのテーブルを読む
-
Accessで処理経過を表示したい...
-
差し込み後、元データを変更し...
-
フィルターかけた後、重複を除...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
カーソル0件の時にエラーを発生...
-
処理件数を非表示にしたい
-
クエリの実行時間の目安
-
カーソルを使って、最終行レコ...
-
データ型でFloatとreal の計算...
-
カーソル宣言をIFで分けられま...
-
ACCESSで一括処理する方法
-
ストアドプロシージャ_カーソル...
-
NVLとDECODEのスピード差
-
Accessで処理経過を表示したい...
-
(x 行処理されました)を表示さ...
-
SELECT と INSERT の速度
-
SQL plus で改行
-
わり算の結果が整数でも小数点...
-
RDBとVSAMの比較
-
動的SQLの処理件数
-
PL/SQL で continue ?
-
カーソルがコミットするとクロ...
-
カーソルオープンの処理について
-
300万件のデータの処理について
おすすめ情報