您好 我有一个Oracle存储过程,它接受2个参数:userid作为输入参数和一个带有2列作为第二个参数的Oracle表:如何从PHP调用该过程?我认为问题在oci_bind_ *中代表第二个参数:我已经尝试了oci_bind_array_by_name但我总是得到'PLS-00306:调用GET_VALUES时参数的数量或类型错误'。 有人可以帮帮我吗?
这是我的代码:
$tab=array();
$query = "begin GET_VALUES(:P_CUSTOMERCODE,:P_TAB); end;";
$stmt = oci_parse($ora_conn, $query) or die(oci_error());
oci_bind_by_name($stmt,":P_CUSTOMERCODE",$codUtente,255);
oci_bind_array_by_name($stmt,":P_TAB",$tab,100,100,SQLT_CHR);
oci_execute($stmt) or die(oci_error());
提前致谢
答案 0 :(得分:0)
答案 1 :(得分:0)
不确定多列表是否适用于oci_bind_array_by_name。查看php手册,您可以使用它来绑定一个简单的varray,assoc数组或嵌套表,基本上只是一列值列表。您可以在“type”参数中指定数组类型,例如使用SQLT_CHR表示varchar2(如果您定义了一个类似:type t_array is table of varchar2(100) index by pls_integer
)。
似乎你创建了一个自定义记录类型(?)的自定义表,如:
type t_rec is record (
col1 number,
col2 varchar2(100)
);
type t_tab is table of t_rec;
我没有看到你可以使用php的oci8调用绑定到t_tab作为out param,但我可能会弄错。