#47081 [Opn]: OCI-Collection returns null for object array
ID: 47081 User updated by: lan dot zhou at emagineinternational dot com Reported By: lan dot zhou at emagineinternational dot com Status: Open Bug Type: OCI8 related Operating System: windows PHP Version: 5.2.8 New Comment: any feedback on this issue? thanks Previous Comments: [2009-01-14 05:18:51] lan dot zhou at emagineinternational dot com 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; [2009-01-14 05:16:12] lan dot zhou at emagineinternational dot com 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; [2009-01-13 20:07:07] s...@php.net Can you upload the SQL script to create the type and procedure? [2009-01-12 23:26:40] 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 -- Edit this bug report at http://bugs.php.net/?id=47081&edit=1
#47081 [Opn]: OCI-Collection returns null for object array
ID: 47081 User updated by: lan dot zhou at emagineinternational dot com Reported By: lan dot zhou at emagineinternational dot com Status: Open Bug Type: OCI8 related Operating System: windows PHP Version: 5.2.8 New Comment: 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; Previous Comments: [2009-01-14 05:16:12] lan dot zhou at emagineinternational dot com 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; [2009-01-13 20:07:07] s...@php.net Can you upload the SQL script to create the type and procedure? [2009-01-12 23:26:40] 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 -- Edit this bug report at http://bugs.php.net/?id=47081&edit=1
#47081 [Fbk->Opn]: OCI-Collection returns null for object array
ID: 47081 User updated by: lan dot zhou at emagineinternational dot com Reported By: lan dot zhou at emagineinternational dot com -Status: Feedback +Status: Open Bug Type: OCI8 related Operating System: windows PHP Version: 5.2.8 New Comment: 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; Previous Comments: [2009-01-13 20:07:07] s...@php.net Can you upload the SQL script to create the type and procedure? [2009-01-12 23:26:40] 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 -- Edit this bug report at http://bugs.php.net/?id=47081&edit=1
#47081 [NEW]: OCI-Collection returns null for object array
From: lan dot zhou at emagineinternational dot com Operating system: windows PHP version: 5.2.8 PHP Bug Type: OCI8 related Bug description: OCI-Collection returns null for object array 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 -- Edit bug report at http://bugs.php.net/?id=47081&edit=1 -- Try a CVS snapshot (PHP 5.2): http://bugs.php.net/fix.php?id=47081&r=trysnapshot52 Try a CVS snapshot (PHP 5.3): http://bugs.php.net/fix.php?id=47081&r=trysnapshot53 Try a CVS snapshot (PHP 6.0): http://bugs.php.net/fix.php?id=47081&r=trysnapshot60 Fixed in CVS: http://bugs.php.net/fix.php?id=47081&r=fixedcvs Fixed in CVS and need be documented: http://bugs.php.net/fix.php?id=47081&r=needdocs Fixed in release: http://bugs.php.net/fix.php?id=47081&r=alreadyfixed Need backtrace: http://bugs.php.net/fix.php?id=47081&r=needtrace Need Reproduce Script: http://bugs.php.net/fix.php?id=47081&r=needscript Try newer version: http://bugs.php.net/fix.php?id=47081&r=oldversion Not developer issue: http://bugs.php.net/fix.php?id=47081&r=support Expected behavior: http://bugs.php.net/fix.php?id=47081&r=notwrong Not enough info: http://bugs.php.net/fix.php?id=47081&r=notenoughinfo Submitted twice: http://bugs.php.net/fix.php?id=47081&r=submittedtwice register_globals: http://bugs.php.net/fix.php?id=47081&r=globals PHP 4 support discontinued: http://bugs.php.net/fix.php?id=47081&r=php4 Daylight Savings:http://bugs.php.net/fix.php?id=47081&r=dst IIS Stability: http://bugs.php.net/fix.php?id=47081&r=isapi Install GNU Sed: http://bugs.php.net/fix.php?id=47081&r=gnused Floating point limitations: http://bugs.php.net/fix.php?id=47081&r=float No Zend Extensions: http://bugs.php.net/fix.php?id=47081&r=nozend MySQL Configuration Error: http://bugs.php.net/fix.php?id=47081&r=mysqlcfg