I am running into a problem where it appears as though the $ora_errno
variable isn't being properly reset after encountering an error. What I am
experiencing is that once $ora_errno and $ora_errstr is set, it stays set
upon additional calls to &ora_bind(). The following code produces the
problem:

<--- code --

#!/usr/local/bin/perl

use Oraperl;

$DBH = &ora_login("", "userid/[EMAIL PROTECTED]");

#---------------------------------------------------------------------------
--------------
#These values should be empty...
print "Error variables before doing anything...\n";     
print "Error code: $ora_errno\n";
print "Error text: $ora_errstr\n";

#---------------------------------------------------------------------------
---------------
#First query -- shouldn't produce an error and will return a result.
$sql = "select log_data from log_os where os_id = :1";
$csr = &ora_open($DBH, $sql);
&ora_bind($csr, '1');
($value) = &ora_fetch($csr);
print "\nValue from query 1: $value\n";
print "\nError variables after basic query 1...\n";     
print "Error code: $ora_errno\n";
print "Error text: $ora_errstr\n";

#---------------------------------------------------------------------------
---------------
#Second query -- will produce an error (ORA-01722: invalid number (DBD
ERROR: OCIStmtExecute)) because
#the bind variable isn't the correct type
&ora_bind($csr, 'a');
($value) = &ora_fetch($csr);
print "\nValue from query 2: $value\n";
print "\nError variables after basic query 2...\n";     
print "Error code: $ora_errno\n";
print "Error text: $ora_errstr\n";

#---------------------------------------------------------------------------
---------------
#Third attempt -- shouldn't produce an error and will return a result. The
problem, however, is that $ora_errno and $ora_errstr
#still has the previous error AFTER the successful &ora_bind() and
$ora_fetch() call.
&ora_bind($csr, 2);
($value) = &ora_fetch($csr);
print "\nValue from query 3: $value\n";
print "\nError variables after basic query 3...\n";     
print "Error code: $ora_errno\n";
print "Error text: $ora_errstr\n";

&ora_close($csr);
print "Logoff of oracle....\n";
&ora_logoff($DBH);
print "\n";

-- end code -->

Is this possibly an installation/configuration problem? Something else?

The various versions are:
Oraperl emulation interface version 1.43
DBD::Oracle 1.14 using OCI8 by Tim Bunce
DBI 1.37 by Tim Bunce
Perl v5.6.0 build for AIX
AIX version 5

Thank you for your help.

________________________________________

This e-mail and any files transmitted with it are confidential and are 
intended solely for the use of the individual or entity to whom they
are addressed. If you are not the intended recipient or the individual
responsible for delivering the e-mail to the intended recipient, please
be advised that you have received this e-mail in error and that any
use, dissemination, forwarding, printing, or copying of this e-mail
is strictly prohibited.

If you have received this e-mail in error, please immediately notify
the HealthPartners Support Center by telephone at (952) 967-6600.
You will be reimbursed for reasonable costs incurred in notifying us.

Reply via email to