PB 電子会議室

コメント

発言No. 更新日 題名(クリックすると発言内容と関連するコメントが表示されます)
18073 02/08/30 12:09:16 RE(2):PB7.0: ストアドプロシージャから、ストアドプロシージャが見えない? By Sei
18072 02/08/30 11:57:04 RE(1):PB7.0: ストアドプロシージャから、ストアドプロシージャが見えない? By odenboy
18070 02/08/30 10:14:22 PB7.0: ストアドプロシージャから、ストアドプロシージャが見えない? By Sei

カテゴリ:スクリプトの記述
日付:2002年08月30日 10:14 発信者:Sei
題名:PB7.0: ストアドプロシージャから、ストアドプロシージャが見えない?

初めて投稿させて頂きます。
早速ですが、本題です。

ストアドプロシージャ(ファンクション)をローカル外部関数として定義した場合、
ストアドプロシージャからは、他のストアドプロシージャは参照できないのでしょうか?

CREATE OR REPLACE PROCEDURE smp_pro
 ( msg OUT CHAR )
IS
BEGIN
msg := smp_fnc() ;
END ;
/
------------------------------------------------------------------------
CREATE OR REPLACE FUNCTION smp_fnc
RETURN CHAR
IS
rsts CHAR(40) ;
BEGIN
rsts := \'Smple Comment\' ;
return rsts ;
END ;
/

上のようにストアドプロシージャ(ファンクション)を定義した場合、PBから呼び出す際に
Transactionオブジェクトのローカル外部関数とし、

// Transactionオブジェクトのローカル外部関数の宣言
SUBROUTINE SMP_PRO(Ref String OUT_NAME) RPCFUNC // (ALIAS FOR \"SMP_PRO\")
// 通常処理中のスクリプト
String msg
SQLCA.SMP_PRO( msg )

上のように使用した場合、期待する戻り値が得られません。

// 通常処理中のスクリプト
String msg
DECLARE p_smp PROCEDURE FOR SMP_PRO() ;
EXECUTE p_smp ;
FETCH p_smp INTO :msg ;
CLOSE p_smp ;

この使用方法の場合は、期待通りの戻り値が得られます。
また、当然ではありますが、SQL Plus上では、期待通りの動きをしています。

長文になりまして、失礼致しました。
過去ログも拝見させて頂きましたが、類似例が見つかりませんでした。
なにとぞ、お力添えよろしくお願い致します。

付加情報:

PowerBuilder Version (記載なし)

Client SoftWare

OS (記載なし)
DBMS (記載なし)
Browser (記載なし)

Server SoftWare

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

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