Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP:将变量绑定到表类型输出参数_Php_Plsql_Oracle Call Interface - Fatal编程技术网

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

PHP:将变量绑定到表类型输出参数,php,plsql,oracle-call-interface,Php,Plsql,Oracle Call Interface,好的,我有一个问题绑定输出参数,它从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'; $

好的,我有一个问题绑定输出参数,它从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_输出作为对象数组或仅作为assoc数组获取,但还没有做到这一点://

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

 $table_output = oci_new_collection($conn,'some_table_type','schema');
在装订之前

以下第204至212页提供了大量资源:


它提供了大量示例,说明如何从Oracle过程和函数中获取自定义字段和表类型数据。

变量名不能使用占位符。它们只能在需要表达式的地方使用。在过程定义中使用这些参数没有意义。您应该参数化
调用过程\u名称(:p\u first,:p\u second,:x\u table\u name,:x\u row\u count)
查询。