Greetings,

I am encountering a strange problem with DBD-Oracle-1.12 with DBI-1.20, or
DBI-1.32 on Solaris 8 with two different versions of Perl: 5.6.1 and 5.8.0
respectively.

I have created a background process that performs a few tasks, which include
updating a remote oracle table used for reporting purposes.
The process is simple, and the sql involved is simple. I have a subroutine
that creates the database handle and returns it. Mind you, I am using strict
subs and strict vars, but not strict refs. 

The gist:
I return the database handle into the main loop (while (1)), where it will
be created and destroyed at the beginning and end of each iteration,
respectively.  Within a foreach loop that is looping through a
data-structure I've created, I pass the $dbh to another routine called
sqlUpdate, which takes care of all of the database work.  The sql I am
trying to execute is no more than a simple "select column from tablename
where column2 = ?" statement, which works fine if I execute it in the main
program, but if the call is made nested elsewhere within the program (via
subroutine), it returns the ORA-01747 error message regarding invalid table,
name, or column.

If I take all of the code in sqlUpdate() and just nest it within the foreach
loop, instead of using a subroutine, the statements prepare and execute as
expected. Otherwise, the statement is never prepared because the ORA-01747
error message is returned.

I have to wonder, does Perl's gargabe collection munge up database handles
in any way?

thanks,

Scott H. Neibarger
SRA International, Inc.
IRS ESM project
512-460-8717

Reply via email to