|
php.net | support | documentation | report a bug | advanced search | search howto | statistics | random bug | login |
[2009-01-12 23:26 UTC] lan dot zhou at emagineinternational dot com
Description:
------------
I have a procedure which returns an object array. When I call this procedure from PHP, and bind an OCI-Collection type object to that output parameter, the PHP object contains the right number of the elements after executing the procedure, but all the elements are NULL.
Reproduce code:
---------------
$nty = oci_new_collection($db, 'objectArray');
$stmt = oci_parse($db, 'BEGIN getObjectArray(output); END;');
oci_bind_by_name($stmt, 'output', $nty, -1, OCI_B_NTY);
oci_execute($stmt, OCI_DEFAULT);
for ($i = 0, $len = $nty->size(); $i < $len; $i++) {
var_dump($nty->getElem($i));
}
$nty->free();
oci_commit($this->_db);
Expected result:
----------------
the content of the objects in the object array which is returned from the procedure ( the return array is not null when I executed the procedure in sql developer)
Actual result:
--------------
NULL
PatchesPull RequestsHistoryAllCommentsChangesGit/SVN commits
|
|||||||||||||||||||||||||||||||||||||
Copyright © 2001-2025 The PHP GroupAll rights reserved. |
Last updated: Sat Nov 01 00:00:01 2025 UTC |
CREATE OR REPLACE TYPE PERSON_TYPE AS OBJECT ( ID NUMBER(10), NAME VARCHAR2(50), AGE NUMBER, CONSTRUCTOR FUNCTION PERSON_TYPE RETURN SELF AS RESULT); CREATE OR REPLACE TYPE BODY PERSON_TYPE AS CONSTRUCTOR FUNCTION PERSON_TYPE RETURN SELF AS RESULT AS BEGIN RETURN; END; END; CREATE OR REPLACE TYPE ARRAY_PERSON_TYPE IS TABLE OF PERSON_TYPE;CREATE OR REPLACE PROCEDURE GET_PERSON (PARRAY OUT ARRAY_PERSON_TYPE) AS ARRPERSON ARRAY_PERSON_TYPE := ARRAY_PERSON_TYPE(); FUNCTION CREATEPERSON (ID NUMBER, NAME VARCHAR2, AGE NUMBER) RETURN PERSON_TYPE IS PERSON PERSON_TYPE := PERSON_TYPE(); BEGIN PERSON.ID := ID; PERSON.NAME := NAME; PERSON.AGE := AGE; RETURN PERSON; EXCEPTION WHEN OTHERS THEN NULL; END; BEGIN ARRPERSON.DELETE; ARRPERSON.EXTEND(2); ARRPERSON(1) := CREATEPERSON(1, 'LAN', 27); ARRPERSON(2) := CREATEPERSON(2, 'ZHOU', 72); PARRAY := ARRPERSON; EXCEPTION WHEN OTHERS THEN END;