William Bulley
2015-06-03 13:06:07 UTC
Environment Perl script trying to query Oracle 11g database:
FreeBSD 9.3-STABLE
DBI 1.633
oracle8-client 0.2.0
DBD::Oracle 1.19
I have no trouble connecting with the Oracle database. And I do
recover data when I use the temporary workaround described below.
I have a query/prepare setup outside a foreach loop where I execute()
the prepared query something like this, only more complex:
my $query = "select column from table where column = ?";
my $sth = $dbh->prepare ($query);
foreach ()
{
$sth->execute($value);
}
I was getting invalid string ORA-0911 errors at the question mark.
I then replaced the question mark with a number (555) and made the
execute() call just "$sth->execute();"
This worked. But I really needed to bind to the $value variable
in the foreach loop.
In reading the DBI POD it said for Oracle the "?" is turned into
":p1" (in this case). So I replaced the question mark with :p1.
The prepare statement no longer generated an error, instead the
execute statement generated the error:
DBD::Oracle::st execute failed: called with 1 bind variables
when 0 are needed [for Statement ... ] at script.pl line xxx.
Can any one help me figure out this confusing situation? BTW, I
have been using Perl for twenty years and DBI for perhaps ten,
and I have used this query/prepare/bind/execute methodology in
the past with success. Something is different, but I don't know
what to look for.
Regards,
web...
FreeBSD 9.3-STABLE
DBI 1.633
oracle8-client 0.2.0
DBD::Oracle 1.19
I have no trouble connecting with the Oracle database. And I do
recover data when I use the temporary workaround described below.
I have a query/prepare setup outside a foreach loop where I execute()
the prepared query something like this, only more complex:
my $query = "select column from table where column = ?";
my $sth = $dbh->prepare ($query);
foreach ()
{
$sth->execute($value);
}
I was getting invalid string ORA-0911 errors at the question mark.
I then replaced the question mark with a number (555) and made the
execute() call just "$sth->execute();"
This worked. But I really needed to bind to the $value variable
in the foreach loop.
In reading the DBI POD it said for Oracle the "?" is turned into
":p1" (in this case). So I replaced the question mark with :p1.
The prepare statement no longer generated an error, instead the
execute statement generated the error:
DBD::Oracle::st execute failed: called with 1 bind variables
when 0 are needed [for Statement ... ] at script.pl line xxx.
Can any one help me figure out this confusing situation? BTW, I
have been using Perl for twenty years and DBI for perhaps ten,
and I have used this query/prepare/bind/execute methodology in
the past with success. Something is different, but I don't know
what to look for.
Regards,
web...
--
/"\ ASCII RIBBON / William Bulley
\ / CAMPAIGN AGAINST /
X HTML E-MAIL AND / E-MAIL: ***@umich.edu
/ \ LISTSERV POSTINGS /
72 characters width template ----------------------------------------->|
/"\ ASCII RIBBON / William Bulley
\ / CAMPAIGN AGAINST /
X HTML E-MAIL AND / E-MAIL: ***@umich.edu
/ \ LISTSERV POSTINGS /
72 characters width template ----------------------------------------->|