PHP:绑定变量到表类型输出参数

时间:2015-01-14 22:20:35

标签: php plsql oci

好的我有一个问题绑定输出参数,即从Oracle数据库返回一个表。

这是一个例子:

procedure_name(
    p_first IN NUMBER,
    p_second IN VARCHAR2,
    x_table_name OUT some_table_type,
    x_row_count OUT NUMBER
);

在使用此过程的oracle中,一切正常。

我来到PHP我试试这个,不要去:

$first = 55;
$second = 'Hello';

$stm = oci_parse($conn, "begin procedure_name(:p_first, :p_second, :x_table_name, :x_row_count)); end;"); 
oci_bind_by_name($stm, ":p_first", $first, 11, SQLT_INT);
oci_bind_by_name($stm, ":p_second", $second, 11, SQLT_INT);
oci_bind_by_name($stm, ":x_table_name", $table_output, -1, OCI_B_NTY);
oci_bind_by_name($stm, ":x_row_count", $table_row_count, 11, SQLT_INT);

oci_execute($stm);

结果我回来了:ORA-01008:并非所有变量都受到约束。

现在我仍然需要弄清楚如何将变量$ table_output作为一个对象数组或只是一个关联数组来获取,但还没有达到目的:/

1 个答案:

答案 0 :(得分:0)

使用以下方法解决了该问题:

 $table_output = oci_new_collection($conn,'some_table_type','schema');

绑定之前。

一个很好的资源是第204页到第212页: http://www.oracle.com/technetwork/database/database-technologies/php/201212-ug-php-oracle-1884760.pdf

它有很多关于如何从Oracle程序和函数中获取自定义字段和表类型数据的示例。