【发布时间】:2015-01-14 22:20:34
【问题描述】:
好的,我遇到了一个绑定输出参数的问题,该参数是从 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 作为对象数组或仅作为 assoc 数组获取,但还没有做到这一点:/
【问题讨论】:
-
变量名不能使用占位符。它们只能用在需要表达式的地方。
-
在过程定义中使用这些参数没有意义。您应该参数化
CALL procedure_name(:p_first, :p_second, :x_table_name, :x_row_count)查询。
标签: php plsql oracle-call-interface