Doc #51291 [Asn->Csd]: oci_error dont report last error when called two times

[email protected]
Newsgroups php.bugs
Message-ID <[email protected]>
Edit report at http://bugs.php.net/bug.php?id=51291&edit=1

 ID:          51291
 Updated by:  [email protected]
 Reported by: sumariva at gmail dot com
 Summary:     oci_error dont report last error when called two times
-Status:      Assigned
+Status:      Closed
 Type:        Documentation Problem
 Package:     OCI8 related
 PHP Version: Irrelevant
 Assigned To: sixd

 New Comment:

This bug has been fixed in SVN.

Snapshots of the sources are packaged every three hours; this change
will be in the next snapshot. You can grab the snapshot at
http://snaps.php.net/.
 
Thank you for the report, and for helping us make PHP better.

Fixed in OCI8 1.4.2 onwards.


Previous Comments:
------------------------------------------------------------------------
[2010-03-24 23:08:57] [email protected]

Automatic comment from SVN on behalf of sixd
Revision: http://svn.php.net/viewvc/?view=revision&amp;revision=296754
Log: Fixed bug #51291 (oci_error doesn't report last error when called
two times)

------------------------------------------------------------------------
[2010-03-14 22:46:08] [email protected]

Chris, is this a documentation issue or a bug in OCI8?

------------------------------------------------------------------------
[2010-03-13 16:04:35] sumariva at gmail dot com

Description:
------------
The documentation should add a note that the function or oracle
change/resets the oracle error flag at each call when a resource
statement passed in. If you call it two times with same statement
resource parameter the second call get no error.

Test script:
---------------
<?php $ociUser = 'system';
$ociPass = 'mudar123';
$hostAddress = '192.168.1.43';
$ociConnString =
'(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST='.$hostAddress.')(PORT=1521))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=XE)))';

$ociDbHandler = oci_connect( $ociUser, $ociPass, $ociConnString );

if ( !$ociDbHandler )
{ #call oci_error without args to check for connection errors
	 var_dump( __LINE__, oci_error() );
	 exit();
}

//sample from website
$stmt = @oci_parse( $ociDbHandler, "select ' from dual");  // note
mismatched quote
if ( !$stmt )
{
  var_dump( __LINE__, oci_error( $ociDbHandler ) ); // For oci_parse
errors pass the connection handle
  var_dump( __LINE__, oci_error( $ociDbHandler ) );
}
$stmt = 'select TABLE_NAME from ALL_TAB_COLUMNS, ALL_TAB_COLUMNS clone
where ALL_TAB_COLUMNS.TABLE_NAME = clone.TABLE_NAME';
$stmt = @oci_parse( $ociDbHandler, $stmt );
$flag = @oci_execute( $stmt, OCI_DEFAULT );  // note duplicated column
name
if ( !$flag )
{ #here the error message is not displayed on second call
  var_dump( __LINE__, oci_error(), oci_error( $ociDbHandler ),
oci_error( $stmt ), $stmt ); // For oci_parse errors pass the connection
handle
  var_dump( __LINE__, oci_error(), oci_error( $ociDbHandler ),
oci_error( $stmt ), $stmt ); // For oci_parse errors pass the connection
handle
  exit;
}
exit( 'end' );  ?>

Expected result:
----------------
Expected that each call on same resource reported the same errors.

Actual result:
--------------
int(27) bool(false) bool(false) array(4) { ["code"]=> int(918)
["message"]=> string(37) "ORA-00918: column ambiguously defined"
["offset"]=> int(7) ["sqltext"]=> string(113) "select TABLE_NAME from
ALL_TAB_COLUMNS, ALL_TAB_COLUMNS clone where ALL_TAB_COLUMNS.TABLE_NAME
= clone.TABLE_NAME" } resource(2) of type (oci8 statement)

int(28) bool(false) bool(false) bool(false) resource(2) of type (oci8
statement) 


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



-- 
Edit this bug report at http://bugs.php.net/bug.php?id=51291&edit=1
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.