ID: 47081
Updated by: [email protected]
Reported By: lan dot zhou at emagineinternational dot com
-Status: Open
+Status: Assigned
Bug Type: OCI8 related
Operating System: windows
PHP Version: 5.2.8
-Assigned To:
+Assigned To: sixd
Previous Comments:
------------------------------------------------------------------------
[2009-01-20 04:06:18] lan dot zhou at emagineinternational dot com
any feedback on this issue?
thanks
------------------------------------------------------------------------
[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] [email protected]
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