如何解决PHP:调用返回表的Oracle存储proc
| 你好 我有一个带2个参数的Oracle存储过程:用户ID作为输入参数,带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,SQLT_CHR);
oci_execute($stmt) or die(oci_error());
提前致谢
解决方法
这可能会回答您的问题:如何使用oci驱动程序从oracle中具有过程的php调用程序包?
, 不确定多列表是否可以与oci_bind_array_by_name一起使用。查看php手册,您可以使用它来绑定一个简单的varray,assoc数组或嵌套表,基本上就是简单的1列值列表。您可以在\“ 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参数,但我可能会误会。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。