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 (記載なし)

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