PB 電子会議室
カテゴリ:データベース
日付:1999年01月29日 09:56 発信者:まー
題名:RE(12):PB6: ストアドプロシージャについて基本的な事を教えて下さい。
おはようございます。まーです。
>取り敢えず、プロシージャって特定の行の更新とか、全体を管理する画面等で、多くの行を参照
>したり、複数の処理を行って値を算出するとかいったものに向いてそうですね。
>(”曖昧”な処理(参照、選択 等)に利用できない。)
”曖昧”な処理をどう解釈していいかわかりませんが、
DataWindowにProcedureを使うと検索もできます。
例えば、ある条件によって検索するテーブル(または項目)を変更する必要がある場合、
普通にSQL SELECTをデータソースにしてDataWindowを作ると、ある条件が、テーブル上に関係の
ない条件だとしたら、スクリプト内で条件を判断し、DataWindowのSQL SELECT文を変更するか、
DataWindowのObjectを動的に変更するかのどちらかになると思いますが、Procedureに引数を渡す
用にして、Procedure内で条件を判断し、SELECT文をきるようにすれば、スクリプト内で条件を意識
せずにデータを検索してこれるわけです。
(但し、View、副問い合わせなどを駆使すればSQL SELECTをデータソースにしてもできることも
ありますが。)
具体的な例を挙げたいところですが、今、ちょっと手元に資料がありません。
どなたかフォローして頂ければ幸いです。。。。(姑息装置使用)
GOLFさんへ:
デメリットの件ですが、サーバの負荷はkasiさんの言う通りです。
その他として、
?TransactionObjectのローカル外部関数を使用するとTransactionObjectが肥大化する。
?TransactionObjectのローカル外部関数とDECRER ? FETCHとの呼び方の違いでNULLの扱いが
違う。
?DWで検索してきた複数行のデータをユーザ入力によって更新する場合、DataWindowのUpdate()
関数のようなスクリプトを自力で書かなければならない。
?テーブルの項目に変更があったとき、ProcedureをRECOMPILEまたは、修正→CREATEしなければ
ならない。その際、ローカル外部関数の定義も変更しなければならない場合がある。
など、など細かいことは結構あります。
ただ、全てProcedureにした方がいいとは言えませんが、なかなか便利ですよ。
付加情報:
PowerBuilder Version (記載なし)
Client SoftWare
OS Windows NT 4.0
DBMS Oracle SQL*Net 2.3
Browser (記載なし)
Server SoftWare
OS (記載なし)
DBMS Oracle 7.3
WebServer (記載なし)
Copyright © 2013 Power Future Co., Ltd.