PB 電子会議室

コメント

発言No. 更新日 題名(クリックすると発言内容と関連するコメントが表示されます)
4787 99/01/27 12:31:12 RE(3):さっきの続きです By bihu
4784 99/01/27 00:25:18 RE(2):さっきの続きです By Taka
4783 99/01/27 00:00:49 RE(1):PB6: PL/SQL表を使用したストアドプロシージャの呼び出し By Taka
4764 99/01/26 15:01:51 PB6: PL/SQL表を使用したストアドプロシージャの呼び出し By bihu

カテゴリ:データベース
日付:1999年01月27日 00:00 発信者:Taka
題名:RE(1):PB6: PL/SQL表を使用したストアドプロシージャの呼び出し

こんにちは。Taka(頭大文字であと小文字)です。(^^;

要点だけまとめます。
PBでは、『結果集合を返すストアドプロシージャ』は、
 1.DWオブジェクトのデータソース(SELECT文の代わり)にし、Retrieve関数で実行する
 2.スクリプトで DECLARE してカーソル処理する
の方法でしか実行できないと思います。

1.の方法は簡単ですのでやってみてください。

2.の方法はマニュアルが不親切なので補足します。

DECLARE xxx PROCEDURE FOR proc_name( {:arg, ...} ) ;
OPEN xxx ;
DO
FETCH xxx INTO :column1, :column2... ;
LOOP WHILE SQLCA.SQLCode = 0
CLOSE xxx ;

通常のプロシジャ(結果集合を返さないやつ)との違いにご注意ください。
(\"EXECUTE\"が\"OPEN\"になり、ループ処理が必要)
このように、1件づつ、それぞれのカラムの値を取り出すことになります。

>PB側には以下のように書きたいのですが、そもそもこういう処理は可能でしょうか?
>つまり、出力結果をそのまま配列に格納したいのです。
>TEST_PACK.TableARec  Outdata[]
>SQLCA.TEST5(ls_OUTDATA)

パッケージで宣言した「参照カーソル型」の変数は、PL/SQL内でしか使えません。
したがって PowerScriptでは同様の宣言は不可能です。

類似の方法としては、上記1.の方法でデータストア上でRetrieveしておいて、
Object.Data[] などのドット表記をうまく使うことでカバーできるかもしれません。
(もちろん、用途にもよりますけど)

では。

付加情報:

PowerBuilder Version (記載なし)

Client SoftWare

OS Windows95
DBMS Oracle SQL*Net 8
Browser (記載なし)

Server SoftWare

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

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