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

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