Skip Menu |

Preferred bug tracker

Please visit the preferred bug tracker to report your issue.

This queue is for tickets about the DBD-Oracle CPAN distribution.

Report information
The Basics
Id: 58628
Status: resolved
Priority: 0/
Queue: DBD-Oracle

People
Owner: champoux [...] pythian.com
Requestors: Robert.Graf [...] s-itsolutions.at
Cc:
AdminCc:

Bug Information
Severity: (no value)
Broken in: (no value)
Fixed in: (no value)



Subject: DBD::Oracle returns wrong error (due an internal error?)
Date: Wed, 23 Jun 2010 12:45:48 +0200
To: "'bug-DBD-Oracle [...] rt.cpan.org'" <bug-DBD-Oracle [...] rt.cpan.org>
From: Graf Robert SECA sIT <Robert.Graf [...] s-itsolutions.at>
Hi, instead of getting the error "ORA-12170 TNS:Connect timeout occurred" (which I get correctly from TOAD) we get this error (via DBI): DBD::Oracle::st execute failed: ORA-24338: statement handle not executed (DBD ERROR: OCIAttrGet OCI_ATTR_PARAM_COUNT) [for Statement "BEGIN PORTAL_API.GET_PUT_CALL_RATIO(:Csr,'WB'); END;" with ParamValues: :csr=DBI::st=HASH(0x8648450) The procedure call is correct (2 parameters) - this procedure calls another procedure which includes only one SELECT statement which selects only data via a database link. The database link does not work (which we found out) due firewall problems. So the error message "ORA-12170 TNS:Connect timeout occurred" would be correct - but not delivered (due an internal DBD::ERROR ?). The procedure call via DBI dies after ~ 210 seconds (which is the timeout time!). But if there would be a parameter count bug - the error should be reported immediately (there are no other operations). Of course, before the firewall everything has worked fine - there was no change of the code. We are using the latest DBD::Oracle 1.24, Perl 5.8.8 If you need more information please let me know. Best regards, Robert Graf Ing. Robert Graf s IT Solutions GAL ST/SECA s IT Solutions AT Spardat GmbH A-1110 Vienna, Geiselbergstr. 21 - 25 Phone: +43 50100 - 17772 Fax: +43 50100 - 917772 E-Mail: robert.graf@s-itsolutions.at Website: www.s-itsolutions.at
This reminds me of one form many years ago which you can find here http://www.mail-archive.com/dbi-users@perl.org/msg15797.html The end result of that thead was that becuse the end ref_cursor was never created DBD::Oracle cannot rebind it to anything. Try rewriting you porcedure to return a value if there is an invalid query or no data found. for example IF IN_COL1 is null THEN // changed here RAISE INVALID_QUERY_DATA; END IF; As for Toad giving one error and DBD::Oracle giving another that is to be expected as they are differnent programs ans most likely impliment ref cursors in a different manner. If you could create a simple repeatable test case I will be able to look at this more however as you state that this error comes up because of a firewall change to a linked DB this may be a little hard to recreate on another system. So I will have to put it as 'Stalled' for now
On Wed Jun 23 07:38:47 2010, PYTHIAN wrote: Show quoted text
> This reminds me of one form many years ago > > which you can find here > > http://www.mail-archive.com/dbi-users@perl.org/msg15797.html > > > The end result of that thead was that becuse the end ref_cursor was > never created DBD::Oracle cannot rebind it to anything. > > Try rewriting you porcedure to return a value if there is an invalid > query or no data found. > > for example > > IF IN_COL1 is null THEN // changed here > RAISE INVALID_QUERY_DATA; > END IF; > > > As for Toad giving one error and DBD::Oracle giving another that is to > be expected as they are differnent programs ans most likely impliment > ref cursors in a different manner. > > > If you could create a simple repeatable test case I will be able to > look at this more however as you state that this error comes up > because of a firewall change to a linked DB this may be a little hard > to recreate on another system. > > So I will have to put it as 'Stalled' for now
I'm closing this as we have no chance of reproducing it. If a repeatable test is found I'll reopen. Martin -- Martin J. Evans Wetherby, UK