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 (記載なし)
Copyright © 2013 Power Future Co., Ltd.