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