【DO!BOOK・ページリンク】
migaro_tech2012   30 / 100

BOOKをみる

10秒後にBOOKのページに移動します


28 業務課題  入出庫のような在庫データの更新処理 の際、SQL で一度に更新するデータ量 が多いと時間がかかり、現場の作業効率 の低下につながる。そこで、パフォーマ ンス向上のためにSQL からストアード プロシージャを利用することにした。こ れに伴い、複数の人が同時に在庫更新を 利用してもデータの整合性を保つための 仕組みづくりが必要となった。 技術課題  データの整合性を保つためには、SQL からIBM i のストアードプロシージャ を呼び出した際、排他処理とトランザク ション制御の実装が必須である。また、 排他などのエラーが起きた場合、IBM i のエラー情報を取得し、ユーザーに通知 する機能の開発が必要となってきた。 技術課題の解決策  DB2/400 のエラー取得を、条件ハン ドラー「DECLER .」のストアードプ ロシージャで実施。SQL からこのスト アードプロシージャを呼び出し、デッド ロックまたはタイムアウトの「40001」 というエラーが戻ってきたら、ユーザー に「レコードロックエラー、もう一度実 行してください。」というメッセージが 表示されるようにした。【ソース1】【ソー ス2】 業務課題解決と効果  SQL でのDB 更新の際、ストアード プロシージャによる更新へ変更したこと により、7000 .8000 件の一括データ更 新の時間が1/3 程度まで短縮され、ユー ザーの作業効率が向上した。  また、ユーザーへエラー表示もできる ようになり、更新エラー時は再処理を行 うよう促すことが可能になった。  ストアードプロシージャの利用によ り、以下のようなメリットを得ることが できた。 @ネットワーク負荷を軽減できる。 A 構文解析や内部中間コードへの変換を 行うため、処理時間が軽減される。 B Delphi 言語とSQL とで分業が可能 になる。 M Migaro.Technical Award 2012 優秀賞 Delphi/400でIBM iのストアードプロシージャを利用し、 SQL処理を高速化 島根 英行 様 シルフ シルフ 業務内容はIBM i を中心としたシ ステム開発。販売管理をメインに、 オフコンやPC サーバーからのリプ レース提案を得意としている。 部門 2