PB 電子会議室
発言No. | 更新日 | 題名(クリックすると発言内容と関連するコメントが表示されます) |
---|---|---|
13506 | 00/10/10 19:25:21 | RE(6):PB7.0: 値の受け渡し方について By ryochan |
13503 | 00/10/10 14:20:38 | RE(5):PB7.0: 値の受け渡し方について By Nana |
13499 | 00/10/10 11:40:43 | RE(4):PB7.0: 値の受け渡し方について By ryochan |
13498 | 00/10/10 10:37:16 | RE(3):PB7.0: 値の受け渡し方について By ryochan |
13495 | 00/10/10 01:59:12 | RE(2):PB7.0: 値の受け渡し方について By Taka |
13493 | 00/10/06 18:38:32 | RE(1):PB7.0: 値の受け渡し方について By ryochan |
13489 | 00/10/06 14:42:11 | PB7.0: 値の受け渡し方について By Nana |
カテゴリ:スクリプトの記述
日付:2000年10月06日 18:38 発信者:ryochan
題名:RE(1):PB7.0: 値の受け渡し方について
Nanaさん、こんにちは。
Nanaさんの例に合わせて説明します。
<プロシージャ内>
1.プロシージャの宣言に出力パラメータを追加する。
CREATE PROCEDURE sp_test(@test int,@result int output)
...
2.プロシージャ内で出力パラメータに出力結果を代入する。
select @result = カラム from テーブル where ...
<PB>
今、試すことが出来ないのですが、
昔、MSSQLで
宣言で
@result = :l_aa output
としても取得できなく、
RPCFUNCを使用して取得させた記憶があります。
1.プロージャ用tansactionユーザオブジェクトを作成する
ユーザオブジェクト→クラス→transactionを選択し、
ローカル外部関数→プロシージャで対象のプロシージャを
選択すると、RPCFUNCが取り込まれる。
引数についてきちんと型を合わせる。
function long sp_test(long test,ref long result) RPCFUNC ALIAS FOR \"dbo.sp_test\"
2.ユーザオブジェクト関数で
その外部関数を使用した処理を書く。
結果の引数はref宣言を必ずする。
宣言:long uf_sp_test(p_1,ref p_2)
処理:return sp_test(p_1,p_2)
3.ユーザオブジェクトを保存する
uo_proc_tran
4.ユーザオブジェクトの生成
とプロパティ(現在の接続情報)をセットし接続する。
(宣言やタイミングは任せます。)
uo_proc_tran proc_tran
proc_tran = create uo_proc_tran
proc_tran.logid = \'***\'
...
connect using proc_tran
5.ユーザオブジェクト関数の実行
long test,l_aa
test = 100
proc_tran.uf_sp_test(test,l_aa)
これで、l_aaに20が格納されているはずです。
*ユーザオブジェクトのtransactionは
現在の開発段階にもよりますが、
いっそのこと、トランザクションは
このユーザオブジェクトで統一させても構わないです。
できればこちらの方が余分にトランザクションを
増やさないのでいいと思います。
ps
もし解決されたら、しっかりと結果と方法を
登録しておいてくだいね。ねっ「まつ」さん。^^
付加情報:
PowerBuilder Version (記載なし)
Client SoftWare
OS Windows 2000
DBMS Microsoft SQL Server Client 6.5
Browser (記載なし)
Server SoftWare
OS (記載なし)
DBMS Microsoft SQL Server 6.5
WebServer (記載なし)
Copyright © 2013 Power Future Co., Ltd.