ID:               31995
 User updated by:  wojciech dot superson at bph dot pl
 Reported By:      wojciech dot superson at bph dot pl
 Status:           Open
 Bug Type:         OCI8 related
 Operating System: MS Windows 2003 Serwer
 PHP Version:      5.0.3
 New Comment:

I have one more problem, I think it is connected to the original one.
Very often, there is message in apache error.log file "PHP Warning: 
oci_fetch_all() [<a
href='function.oci-fetch-all'>function.oci-fetch-all</a>]:
OCIFetchStatement: ORA-01001: invalid cursor\n in d:\\program
files\\apache group\\Apache\\htdocs\\moa\\php\\oracle.php on line 188.
The line 188 is within the OracleExecProcSelect function which I have
sent you before.


Previous Comments:
------------------------------------------------------------------------

[2005-02-16 10:49:55] wojciech dot superson at bph dot pl

Description:
------------
I use PHP 5.0.3 with Oracle 9.2.0.5.0 on HP-UX 11.11 and Apache 1.3.31.
Aplication works fine and calls the same queries (as Oracle stored
procedures) many times. The problem is that sometimes (more less once
every 30/40 times) query returns only one/two record(s) neverless there
are many records in database for this query. I am not able to reproduce
the problem on wish. I attach the source code of the function I use to
call the Oracle stored procedure for every query in the application.
The name of procedure is passed in $statement variable.


Reproduce code:
---------------
function OracleExecProcSelect( $conn,$statement,& $results, &
$errorcode=-1, & $errordesc="" )
{       
        $curs = oci_new_cursor( $conn );
        $stmt = oci_parse( $conn,"begin ".$statement." end;");
        if ( ! oci_bind_by_name( $stmt,"data",$curs,-1,OCI_B_CURSOR ) ) return
;
        if ( ! oci_bind_by_name( $stmt,":error_code",$errorcode,32 ) ) return
;
        if ( ! oci_bind_by_name( $stmt,":error_desc",$errordesc,255 ) ) return
;

        oci_execute( $stmt,OCI_DEFAULT );
        oci_execute( $curs,OCI_DEFAULT );

        $nrows = oci_fetch_all( $curs,$results );

        oci_free_statement($stmt);
        oci_free_statement($curs);

      return $nrows;
}

Expected result:
----------------
I should get the array ($results) with rows returned by the Oracle
stored procedure (its name is passed by $statement variable). It works
fine but sometimes it returns only one/two rows. Then I call this
procedure from sqlplus I get all requested records.



------------------------------------------------------------------------


-- 
Edit this bug report at http://bugs.php.net/?id=31995&edit=1

Reply via email to