PB 電子会議室
発言No. | 更新日 | 題名(クリックすると発言内容と関連するコメントが表示されます) |
---|---|---|
9383 | 99/11/24 11:14:17 | RE(7):PB7.0: ストアドプロシージャの呼び出しにつきまして By peko |
9382 | 99/11/24 10:06:55 | RE(6):PB7.0: ストアドプロシージャの呼び出しにつきまして By てとらぽっと |
9381 | 99/11/24 09:42:12 | RE(5):PB7.0: ストアドプロシージャの呼び出しにつきまして By peko |
9380 | 99/11/24 09:36:21 | RE(4):PB7.0: ストアドプロシージャの呼び出しにつきまして By peko |
9378 | 99/11/24 09:03:41 | RE(3):PB7.0: ストアドプロシージャの呼び出しにつきまして By てとらぽっと |
9377 | 99/11/24 08:40:43 | RE(2):PB7.0: ストアドプロシージャの呼び出しにつきまして By peko |
9365 | 99/11/22 17:38:42 | RE(1):PB7.0: ストアドプロシージャの呼び出しにつきまして By Taka |
9362 | 99/11/22 16:25:33 | PB7.0: ストアドプロシージャの呼び出しにつきまして By peko |
カテゴリ:スクリプトの記述
日付:1999年11月24日 11:14 発信者:peko
題名:RE(7):PB7.0: ストアドプロシージャの呼び出しにつきまして
てとらぽっとさん、こんにちは。
>>>外部関数の関数宣言は、
>>>オブジェクト(Transactionオブジェクトが望ましい)をデザインするペインタの
>>>[宣言] メニューから、[グローバル外部関数] か [ローカル外部関数] で宣言するんですよ。
>
>という一般論的な回答をしてしましたが、
>【DBMS の関数】を宣言するときは、
>【Transactionオブジェクトのローカル外部関数】でなければならない
>ような気がしてきました。
>
>オンラインブックの「外部関数の宣言」あたりを確認してください。
>
>(このTransactionうんぬんの宣言方法については過去ログにあったはずです。)
>
>
>
>まずは宣言が解決してから考えてもらったほうがいいのですが、
>Retrieverowイベントでストアドプロシージャを呼び出すなんて
>パフォーマンスが悪くありません?
>SELECT文で取ってきた結果に処理をかけるんだと推測しますが、
>SELECT文にストアドプロシージャを埋め込めこんで、処理をかけた後の結果を取るほうが
>SQL文の発行が少なくトランザクションが少ないですし、
>無駄にRetrieverowイベントを引き起こす必要もありません。
>ストアドプロシージャは何度も呼び出すと(パッケージに比べて)サーバの負荷にもなります。
>
>
【Transactionオブジェクトのローカル外部関数】で関数を宣言し、
Retrieverowイベントにて以下の記述をして実行してみました。
variable = sqlca.CONV_OLD_BUMON(seikyumoto)
結果、きちんと関数は呼び出されていて、値も返ってきているのですが
最終レコードのイベント発生時(関数を呼んだ後)にオラクルエラー\"フェッチ順序が無効です\"
となってしまいます。後1歩なのにまたつまづいてしまいました。
てとらぽっとさんのおっしゃる通り、Retrieverowイベントで1行ずつ、関数を
呼び出すのはパフォーマンスの面でよくないとは思ったのですが、
ストアドプロシージャを呼び出すプログラムがいくつかあるので、今後修正が
はいった時の事を考えて外部に記述してあります。(ユーザーの要望)
とりあえず、外部関数の呼び出し方は理解できました。
ありがとうございました。
オラクルエラーについては調べてみます。
付加情報:
PowerBuilder Version (記載なし)
Client SoftWare
OS Windows95
DBMS (記載なし)
Browser (記載なし)
Server SoftWare
OS (記載なし)
DBMS Oracle 7.3
WebServer (記載なし)
Copyright © 2013 Power Future Co., Ltd.