PB 電子会議室

コメント

発言No. 更新日 題名(クリックすると発言内容と関連するコメントが表示されます)
10833 00/03/27 18:22:25 RE(11):特定の更新結果だけ Rollback したいんです。(ゴミレス) By Taka
10831 00/03/27 13:34:15 RE(10):特定の更新結果だけ Rollback したいんです。(ゴミレス) By ryochan
10829 00/03/27 11:30:40 RE(9):特定の更新結果だけ Rollback したいんです。(ゴミレス) By HAL
10828 00/03/27 11:25:30 RE(8):特定の更新結果だけ Rollback したいんです。 By てとらぽっと
10827 00/03/27 11:02:36 RE(7):特定の更新結果だけ Rollback したいんです。(ゴミレス) By Taka
10822 00/03/27 09:01:50 RE(6):特定の更新結果だけ Rollback したいんです。 By HAL
10820 00/03/24 23:36:18 RE(5):特定の更新結果だけ Rollback したいんです。 By Taka
10818 00/03/24 21:49:27 RE(4):特定の更新結果だけ Rollback したいんです。 By M.M
10817 00/03/24 21:22:24 RE(3):特定の更新結果だけ Rollback したいんです。 By HAL
10816 00/03/24 21:45:36 RE(2):特定の更新結果だけ Rollback したいんです。 By ryochan
10815 00/03/24 20:10:32 RE(1):特定の更新結果だけ Rollback したいんです。 By Mika★
10812 00/03/24 17:13:30 特定の更新結果だけ Rollback したいんです。 By HAL

カテゴリ:スクリプトの記述
日付:2000年03月24日 21:45 発信者:ryochan
題名:RE(2):特定の更新結果だけ Rollback したいんです。

HALさん、Mika★さんこんばんは。

>>  題名の通り、PL/SQLの Rollback To Save Point みたいな機能を
>>スクリプト中で実現したいのですが、可能でしょうか?
>>
>>  具体的には、ある伝票の数量が画面で変更された時、
>>各明細行の更新に失敗しても、次の明細の更新はちゃんと行いたいのです。
>>明細毎に Commit/Rollback する事が可能でしたらよかったのですが、
>>伝票単位で Commit/Rollback をする必要がある仕様となっております。

>つまり、更新に失敗した行以外の更新は、DBに反映(COMMIT)させたい、ということでしょうか?
>う?ん、試していないので無責任モードですが
>更新に失敗したら、とりあえずROLLBACKして
>失敗した行のステータスをNotModified!にして、再度更新、てのはダメかなぁ?(^-^;

恐れ入りながら、Mika★さんのおっしゃるようでしたら
HALさんのご質問の内容は「明細行毎でCommit/Rollbackが必要な仕様にする」
ということでとらえてよろしいですね。
ちょっと頭がこんがらがってましたが Mika★さんのご回答で納得しました。
Mika★さんのご回答に付け足しで回答させて頂きます。
この方法ですと、失敗した行番号の取得が困難なのでは、と思います。
すみません、方法があれば勉強の為教えて下さい。もし可能でしたら
Mika★さんのご回答が一番いい方法だと思います。

私の考えです。
ちょっと面倒ですが、DWのUpdate関数のロジックを埋め込みSQLで行えば可能です。
1.カレントバッファの行数分ループさせる。
2.n行目の行に対し、ステータスを取得し、ステータスに応じてSQL文を実行する。
・DataModified!・・・SQLのUPDATE文
・NewModhified!・・・SQLのINSERT文
・NotModified!、(必要ならばNew!も)・・・CONTINUE
3.SQLコードによりCOMMIT/ROLLBACKを投げる。
4.2.に戻る。
5.DELETEバッファに対しても同様にして、DELETE文を行数分(DeletedCount関数を使用します。)
行い、それぞれに対してCOMMIT/ROLLBACKを投げます。
因みにご存じかもしれませんが、DELETEバッファにおいて、
DELETE文の削除キーの取得はGetItem***関数で取得できます。


付加情報:

PowerBuilder Version (記載なし)

Client SoftWare

OS (記載なし)
DBMS (記載なし)
Browser (記載なし)

Server SoftWare

OS (記載なし)
DBMS (記載なし)
WebServer (記載なし)

PowerSpaceの運営は、パワーフューチャー株式会社が行っております。
Copyright © 2013 Power Future Co., Ltd.