【问题标题】:PHP: calling Oracle stored proc that returns a tablePHP:调用返回表的 Oracle 存储过程
【发布时间】:2011-05-30 09:09:16
【问题描述】:

我有一个带有 2 个参数的 Oracle 存储过程。 userid 作为输入参数和具有 2 列的 Oracle 表作为第二个输出参数。如何从 PHP 调用该过程?我认为问题在于第二个参数的oci_bind_*。我试过oci_bind_array_by_name,但我总是得到PLS-00306: wrong number or types of arguments in call to 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());

【问题讨论】:

  • 到目前为止你的代码是什么?

标签: php oracle plsql


【解决方案1】:

【讨论】:

    【解决方案2】:

    不确定多列表是否可以与 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 作为输出参数绑定,但我可能弄错了。

    【讨论】:

      猜你喜欢
      • 2016-04-09
      • 2011-03-13
      • 2017-05-21
      • 2019-06-03
      • 1970-01-01
      • 2012-01-04
      • 1970-01-01
      • 2011-01-31
      • 2014-08-31
      相关资源
      最近更新 更多