PB 電子会議室

コメント

発言No. 更新日 題名(クリックすると発言内容と関連するコメントが表示されます)
12044 00/07/03 16:08:09 RE(5):PB6: ストアドへの配列渡し By Taka
12032 00/07/03 13:24:31 RE(4):PB6: ストアドへの配列渡し By mio
12027 00/07/03 12:00:21 RE(3):PB6: ストアドへの配列渡し By Taka
12025 00/07/03 11:20:18 RE(2):PB6: ストアドへの配列渡し By mio
12021 00/07/01 20:47:21 RE(1):PB6: ストアドへの配列渡し By Taka
12019 00/06/30 20:13:29 PB6: ストアドへの配列渡し By mio

カテゴリ:データベース
日付:2000年07月03日 11:20 発信者:mio
題名:RE(2):PB6: ストアドへの配列渡し

Takaさん、こんにちは。

>情報量が少ないです。
>ストアドプログラム側の引数がどんなで、PBでどんな定義になっていて、
>スクリプトから何を渡しているとか、配列の数がいくつあるとか、
>「バインド関係で何をどう変更したか」を書いてくれなければ、第3者には
>検証すらできません。

説明不足、申し訳ありませんでした。

パッケージ:
create or replace package test_pkg is
 type type_array is table of char(8) index by binary_integer;
end test_pkg;
ファンクション:
create or replace function test_func(
 parm_1 in test_pkg.type_array
 ) return number
is
 i integer;
begin
 for i in 1 .. parm_1.count loop
  insert table_name(column_name) values(parm_1(i));
 end loop;
 return parm_1.count;
end test_func;

PB側トランザクション・クラスのローカル外部関数宣言:
function double test_func(string parm_1[]) RPCFUNC
ここでのダイアログでプロシージャを選択すると、初めは
「subroutine test_func() RPCFUNC」 となるので自分で
上記のように書き替えました。

PB側スクリプト:
double ldb_ret
string ls_parm[]
ls_parm[1] = \"A\"
ldb_ret = sqlca.test_func(ls_parm)
messagebox(\"\",string(ldb_ret) + \":\" + sqlca.sqlerrtext)
commit;

以上のように記述しています。

>また、バインド関係が影響しているかどうかについては、変更を元に戻して
>検証すれば、関連性の有無ぐらいはそちらで判断できると思いますが。

変更している箇所は元に戻して検証してみましたが、結果は同じでした。
変更した箇所はバインドの抑制です。通常はバインドの抑制のチェックをONにしています。
静的バインドのチェックのON・OFFも試しましたが、結果は同じでした。
この他にもバインド関係の設定があるのですか?

よろしくお願いします。

付加情報:

PowerBuilder Version (記載なし)

Client SoftWare

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

Server SoftWare

OS HP-UX
DBMS Oracle 8.0
WebServer (記載なし)

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