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

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