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