PB 電子会議室
発言No. | 更新日 | 題名(クリックすると発言内容と関連するコメントが表示されます) |
---|---|---|
15468 | 01/06/12 11:11:26 | RE(4):PB5.0.03: procedureの呼出、実行方法について By aki |
15464 | 01/06/11 23:36:39 | RE(3):PB5.0.03: procedureの呼出、実行方法について By Taka |
15459 | 01/06/11 16:20:55 | RE(2):PB5.0.03: procedureの呼出、実行方法について By aki |
15454 | 01/06/08 20:38:16 | RE(1):PB5.0.03: procedureの呼出、実行方法について By naive |
15449 | 01/06/08 16:24:53 | PB5.0.03: procedureの呼出、実行方法について By Miyaku |
カテゴリ:スクリプトの記述
日付:2001年06月11日 23:36 発信者:Taka
題名:RE(3):PB5.0.03: procedureの呼出、実行方法について
Miyakuさん、akiさん、こんばんは。
>上記発言に自分で補足しますと
>DECLARE文は、使用するプロシージャの宣言を行っているだけで、
>EXECUTE文は、宣言したプロシージャを実行しただけです。
>
>問題は、実行しただけでその結果を受け取っていないことなんです。
さらに補足すると、
・DECLARE文では INの引数だけを渡す
・OUTの引数は、FETCH文にて取得する
ということでしょうか。
Miyakuさんをはじめ、プロシージャの呼び出しで悩む方って、この点を理解されていない
ケースが多いですね。
>さらに未確認事項なんですが、IN属性の無いストアドは、実行エラーになるようなんです。
>#理由をご存じの方いらっしゃいますかね?
>
>自分は、とりあえずダミー引数を入れることで対応しましたが。
???
実験君(久々)してみましたが、何ら問題なかったですけど・・・(Oracleでいいんですよね?)
CREATE OR REPLACE PROCEDURE
PROC_T( OUT_1 OUT NUMBER, OUT_2 OUT VARCHAR2 ) IS
BEGIN
OUT_1 := 1000;
OUT_2 := \'ABCDEFG\';
END;
int li_out
string ls_out
declare proc procedure for PROC_T;
execute proc;
fetch proc into :li_out, :ls_out;
close proc;
messagebox( string(li_out), ls_out )
これで正常に動作しました。
付加情報:
PowerBuilder Version (記載なし)
Client SoftWare
OS Windows NT 4.0
DBMS Oracle SQL*Net 8
Browser (記載なし)
Server SoftWare
OS Windows 2000
DBMS Oracle 8.0
WebServer (記載なし)
Copyright © 2013 Power Future Co., Ltd.