0

Ok I'm having an issue binding output param which is to return a table from an Oracle db.

here's an example:

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

Everything works fine in oracle working with this procedure.

I come over to PHP I try this and no go:

$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);

And as a result I Get back: ORA-01008: not all variables bound.

Now I do still need to figure out how to fetch the variable $table_output as an array of objects or just an assoc array, but haven't gotten that far yet :/

2
  • You can't use placeholders for variable names. They can only be used in places where expressions are expected. Commented Jan 14, 2015 at 22:23
  • It doesn't make sense to use these parameters on the procedure definition. You should parametrize the CALL procedure_name(:p_first, :p_second, :x_table_name, :x_row_count) query. Commented Jan 14, 2015 at 22:33

1 Answer 1

0

The issue was resolved by using:

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

before binding.

A great resource has been page 204 to 212 of: http://www.oracle.com/technetwork/database/database-technologies/php/201212-ug-php-oracle-1884760.pdf

It has plenty of examples of how to fetch custom field and table type data from Oracle procedures and functions.

Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.