David,

It turns out to be relatively trivial.  Take the disconnect out of the
execsql subroutine.  Pull the disconnect to the main subroutine and I bet it
will work.

Jeff

> -----Original Message-----
> From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED]]
> Sent: Sunday, February 03, 2002 1:13 PM
> To: [EMAIL PROTECTED]; [EMAIL PROTECTED]
> Cc: [EMAIL PROTECTED]
> Subject: RE: DBI Oracle Database Handle trouble
>
>
> Jeff,
>
> Thanks for your reply.
>
> First of all, the versions of software I'm running are:
>       Oracle8i Enterprise Edition Release 8.1.7.2.0
>       perl5 (5.0 patchlevel 4 subversion 4)
>       Solaris 2.6
>
> The sample of code which I'm using to test is attached (test.pl), and
> the output
> I get (including an echo of the first SQL, a result status, an echo of
> the
> 2nd SQL, and then the error) is as follows:
>
>       BEGIN sp_exec_imm('drop index CMBUS1'); END;
>       Return Status: 1
>       select trade_date, host_cust_id from cm_trade_fact where trade_id
> = 210960459
>       DBD::Oracle::db prepare failed:  (DBD INVALID_HANDLE:
> OCIStmtPrepare) at test.pl line 86.
>        (DBD INVALID_HANDLE: OCIStmtPrepare) at test.pl line 86.
>
> If I reverse the order of the two SQL statements, to prove that the 2nd
> works, then
> the output is as follows:
>
>       select trade_date, host_cust_id from cm_trade_fact where trade_id
> = 210960459
>       Return Status: 1
>       15-MAY-01, WA181862
>       BEGIN sp_exec_imm('drop index CMBUS1'); END;
>       DBD::Oracle::db do failed:  (DBD INVALID_HANDLE: OCIStmtPrepare)
> at test.pl line 109.
>        (DBD INVALID_HANDLE: OCIStmtPrepare) at test.pl line 109.
>
> Finally, if I use a completely separate database handle for the 2nd SQL
> statement,
> (attached is the code used for this, called test2.pl) it works:
>
>       select trade_date, host_cust_id from cm_trade_fact where trade_id
> = 210960459
>       Return Status: 1
>       15-MAY-01, WA181862
>       BEGIN sp_exec_imm('drop index CMBUS1'); END;
>       Return Status: 1
>
> Thanks for taking a look!
>
> -Dave-
>
>
>
> -----Original Message-----
> From: jurlwin
> Sent: Saturday, February 02, 2002 3:42 PM
> To: wrendave; dbi-users
> Cc: jurlwin; Tim.Bunce; Wren, David
> Subject: RE: DBI Oracle Database Handle trouble
>
>
> David,
>
> It would be helpful if you attached a small script which demonstrates
> the
> error.
>
> I have had numerous instances using Oracle to have multiple sql
> statements
> executed and, in fact some executing concurrently.  All using the same
> connection.
>
> Regards,
>
> Jeff
>
> >
> > I am a novice Perl DBI programmer currently having trouble referencing
> > the same
> > database handle (in Main) from within REPEATED calls to a perl
> > subroutine I wrote as an engine
> > to process multiple SQL statements (one call per SQL statement).
> >
> > (I'm on Solaris 2.6.???, Oracle 8i, Perl5????)
> >
> > In other words, I get a "db prepare" error when I send the 2nd SQL
> > statement from Main into
> > the handle in the subroutine.  The first statement executes fine and I
> > get the results I want
> > back from the database.  It's just that 2nd pass to the same handle
> that
> > kills the program.
> >
> > I was able to fix the problem by passing the 2nd SQL statement
> through a
> > separate database
> > handle (I pass both the database and statement handles to the
> > subroutine).  I have been
> > playing with the object "finish" but haven't had any luck with it
> > resolving the problem.
> >
> > But I thought Oracle DBI database handles were able to process
> multiple
> > statement handles???????   I'd really like to use only one database
> > handle for all
> > statement handles because I've got a lot of SQL statements to process.
> > I think it is
> > ridiculous that I would have to create so many database handles to
> > access the same database.
> >
> > Any suggestions would be GREATLY appreciated.  I'm sorry I didn't
> supply
> > more
> > detail, but I'm not at my UNIX machine right now and am in a tight
> pinch
> > to get this done).
> >
> > THANKS A LOT for any help.  Please reply to both my addresses:
> > [EMAIL PROTECTED]
> > and [EMAIL PROTECTED]
> >
> > -Dave-
> >
> >
>
>

Reply via email to