PHP:调用返回表的Oracle存储过程

时间:2011-05-30 09:09:17

标签: php oracle plsql

您好 我有一个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());

提前致谢

2 个答案:

答案 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,但我可能会弄错。