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 (記載なし)
Copyright © 2013 Power Future Co., Ltd.