Unsupported feature
Oracle RPC does not support arrays.
Workaround
Convert the array to a string and use the string instead of the array.
For example, the following stored procedure has an array IN parameter and an array OUT parameter. As a workaround, use varchar to replace both the IN and OUT parameters.
Assembly the IN parameter in the PowerScript:
ls_outparam = space(30) ls_inparam = '123;456'
The INI parameter will be split in the stored procedure. Do the same for the OUT parameter.
PROCEDURE pro_arrNum(
in_arrParamNum in usertype_number,
out_arrParamNum out usertype_number
)
AS
BEGIN
out_arrParamNum(1) := in_arrParamNum(1) ;
out_arrParamNum(2) := in_arrParamNum(2);
END pro_arrNum;
procedure pro_arrNumTostr(
in_varchar in varchar,
out_varchar out varchar
)
AS
ls_resstr varchar(30);
ls_desstr varchar(30);
li_pos int;
BEGIN
li_pos := 1;
ls_resstr := in_varchar;
while li_pos > 0 and length(ls_resstr) > 0 loop
li_pos := instr(in_varchar, ';', 1);
if li_pos > 0 then
ls_desstr := ls_desstr || ';' || substr(ls_resstr, 1, li_pos - 1) ;
ls_resstr := substr(ls_resstr, li_pos + 1);
end if;
end loop;
out_varchar := ls_desstr;
ls_desstr := ls_desstr || ';' || '999';
END pro_arrNumTostr;
PowerScript:
int li_pos, li_index
string ls_inparam, ls_outparam, ls_return, ls_value
long ll_outarrparam[]
ls_outparam = space(30)
ls_inparam = '123;456'
gtr_trans.pro_arrNumTostr(ls_inparam, ref ls_outparam)
li_pos = 1
mle_1.text = ''
ll_outarrparam = wf_formatstring(ls_outparam)
public function any wf_formatstring (string as_value);int li_pos, li_index
string ls_value, ls_return
long ll_foramtvalue[]
li_pos = 1
do while len(as_value) > 0 and li_pos > 0
li_pos = pos(as_value, ";")
ls_value = mid(as_value,1, li_pos -1)
if IsNumber (ls_value) then
li_index++
ll_foramtvalue[li_index] = Integer(ls_value)
end if
as_value = mid(as_value, li_pos+1)
loop
if IsNumber (as_value) then ll_foramtvalue[li_index+1] = Integer(as_value)
return ll_foramtvalue
end function


