PB 電子会議室

コメント

発言No. 更新日 題名(クリックすると発言内容と関連するコメントが表示されます)
14467 01/02/02 17:26:53 RE(2):PB6.5: スクリプト内でのストアドプロシージャのコンパイルについて By ZONE
14454 01/02/01 23:49:16 RE(1):PB6.5: スクリプト内でのストアドプロシージャのコンパイルについて By Taka
14452 01/02/01 23:09:58 PB6.5: スクリプト内でのストアドプロシージャのコンパイルについて By pkリサーチ

カテゴリ:データベース
日付:2001年02月01日 23:49 発信者:Taka
題名:RE(1):PB6.5: スクリプト内でのストアドプロシージャのコンパイルについて

pkリサーチさん、こんばんは。

>リンクを張ってある先のストアドプロシージャ(SP)を呼び出す処理があるのですが、
>リンク先のDBの都合でそのSPには頻繁にinvalidが立ちます。

DBリンクは使ったことがないのですが、プロシージャがINVALIDになるということは、
リンク先でALTER TABLEなどを頻繁におこなっているのでしょうか?
いずれにしても、何かをやった後 INVALIDになったオブジェクトのリコンパイルを
せずにほうっておく、という運用に問題があるように思えます。

>回避策として、スクリプト内でSPを呼び出す直前に
>直書きのSQLでコンパイルを行うようにしました。

これって、自アプリの中で \"ALTER PROCEDURE proc_name COMPILE\" を
IMMEDIATE実行している、という事ですか? これって危険じゃありません?

>すると一見正常に動作しているのですが、
>戻り値の一部が取得できないことが判明しました。

EXECUTE文の直後に、SQLCA.SQLCodeを拾っていますか?
確かPBの場合、セッションが確立した後でVALIDに変わったプロシジャ等は、
呼び出し時にエラーになったと思います。
(でも、リコンパイルしたセッションと同じセッションなら問題なさそうですが)
EXECUTE文がコケているなら、FETCH文で何も取得されません。

私のとこはストアドパッケージONLYですが、パッケージボディをリコンパイルすると
上記現象が起きることがあります。
この場合、一度DISCONNECTし、再度CONNECTすると正しくコールできるようになります。

ぜんぜん参考になってないですね。すみません。(^^;

付加情報:

PowerBuilder Version (記載なし)

Client SoftWare

OS Windows98
DBMS Oracle SQL*Net 8
Browser (記載なし)

Server SoftWare

OS Solaris
DBMS Oracle 8.0
WebServer (記載なし)

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