Skeeve has asked for the wisdom of the Perl Monks concerning the following question:
I'm encountering strange errors when using placeholders in an sql query, using an Oracle database. For example this query gives me
DBD::Oracle::db prepare failed: ORA-00907: missing right parenthesis ( +DBD ERROR: error possibly near <*> indicator at char 114 in ' sele +ct (FROM_TZ( CAST(sysdate as timestamp) , :timezone ) <*>AT TIME ZONE :timezone ) AS MY_RESULT from dual ...
This is the code I use:
use strict; use warnings; use DBI; my $sid='MYDB'; my $user='myuser'; my $pass='mypass'; my $dbh = DBI->connect("dbi:Oracle:$sid", $user, $pass, { AutoCommit => 0, RaiseError => 0, PrintErro +r => 1 } ); my $sth= $dbh->prepare(<<SQL) or die $dbh->errstr; select (FROM_TZ( CAST(sysdate as timestamp) , :TIMEZONE ) AT TIME ZONE :TIMEZONE ) AS MY_RESULT from dual SQL $sth->bind_param(':TIMEZONE', 'Europe/Berlin') or die $dbh->errstr;
When I replace ":TIMEZONE" with the string "'Europe/Berlin'", it works, so it is not an issue of the query itself.
In the real production code I use, the error is even more strange, as it tells me something about illegal relational operators.
Is this behaviour somewhere documented in DBD::Oracle? I couldn't find it.
Thanks for your help.
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re: Strange errors with DBD::Oracle and placeholders
by roboticus (Chancellor) on Mar 28, 2012 at 12:52 UTC | |
|
Re: Strange errors with DBD::Oracle and placeholders
by morgon (Priest) on Mar 28, 2012 at 14:47 UTC | |
by Skeeve (Parson) on Mar 29, 2012 at 04:46 UTC | |
|
Re: Strange errors with DBD::Oracle and placeholders
by mje (Curate) on Mar 28, 2012 at 13:22 UTC |