2015-01-14 24 views
0

好吧我有一个问题绑定输出参数是从Oracle数据库返回一个表。PHP:绑定变量到表类型输出参数

这里有一个例子:

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命令数组的数组,但还没有得到那么远,:/

+0

您不能对占位符使用变量名称。它们只能用于需要表达式的地方。 – Barmar

+0

在程序定义上使用这些参数没有意义。您应该参数化'CALL procedure_name(:p_first,:p_second,:x_table_name,:x_row_count)'查询。 – Barmar

回答