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

PHP:调用返回表的Oracle存储过程,php,oracle,plsql,Php,Oracle,Plsql,我有一个Oracle存储过程,它有两个参数userid作为输入参数,Oracle表中有2列作为第二个输出参数。如何从PHP调用该过程?我认为问题在于第二个参数的oci\u bind.*。我已经尝试了按\u名称oci\u bind\u array\u,但我总是得到PLS-00306:调用中获取\u值的参数数量或类型错误 有人能帮我吗 这是我的密码: $tab=array(); $query = "begin GET_VALUES(:P_CUSTOMERCODE,:P_TAB); end;

我有一个Oracle存储过程,它有两个参数
userid
作为输入参数,Oracle表中有2列作为第二个输出参数。如何从PHP调用该过程?我认为问题在于第二个参数的
oci\u bind.*
。我已经尝试了按\u名称
oci\u bind\u array\u
,但我总是得到
PLS-00306:调用中获取\u值的参数数量或类型错误

有人能帮我吗

这是我的密码:

$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());

这可能会回答您的问题:

不确定多列表是否可以使用oci\u bind\u array\u by\u name。查看php手册,您可以使用它绑定一个简单的varray、assoc数组或嵌套表,基本上是一列值列表。您可以在“type”参数中指定数组的类型,例如使用varchar2的SQLT_CHR(如果您定义了一个数组,如:
type t_数组是由pls_integer定义的varchar2(100)索引表)

您似乎创建了自定义记录类型(?)的自定义表,类似于:

type t_rec is record (
col1 number,
col2 varchar2(100)
);
type t_tab is table of t_rec;

我不知道在哪里可以使用php的oci8调用将t_tab绑定为out参数,但我可能弄错了。

到目前为止,您的代码是什么?