According to "Martin J. Evans" <boh...@ntlworld.com> on Wed, 06/03/15 at 09:15:
> 
> So, when this fails, what is the value of $value.

I just ran it again.  The value is 547.

> Assuming you have RaiseError set, you can just put an eval
> around the execute and if $@ is set, print out $value.

I don't.  I have a print statement in front of the execute to
show my what I am passing to the execute() method.

> Strictly speaking you do not need to do this - ? is fine.
> DBD::Oracle also supports named parameters e.g., ':myparam'
> which only has an advantage if you want to use :myparam
> more than once in the SQL.

The query is quite complex -- two SELECT statements connected
by a UNION statement -- and the "column = ?" syntax is used
twice.  I changed the "?" to ":myparam" in both places and I
still get the error:

   DBD::Oracle::st execute failed: called with 1 bind
   variables when 0 are needed [for Statement...

> Either because you omitted the value from execute

In this case, it was not omitted.

> but more likely because you need to associate $value
> with the NAMED parameter i.e., call bind_param.

That will be my next test, but I don't hold out much hope for
that working either (I've never had to do this in the past).

> Tell us the column type of 'column' and the value of $value
> when the original code fails. If this does not enlighten you,
> reduce this to a small reproducible script and re-run with
> ora_verbose set to 7. Paste the output somewhere we can view it.

The Oracle type for the column in question is NUMBER.  I assumed
that any integer value would be compatible.  The value is 547 for
the run that just failed.

Never heard of ora_verbose -- where is this to be set?  Just in
my code somewhere, or on the DBI->connect() method, or where?

Regards,

web...

-- 

 /"\   ASCII RIBBON          / William Bulley
 \ /   CAMPAIGN AGAINST     / 
  X    HTML E-MAIL AND     / E-MAIL: w...@umich.edu
 / \   LISTSERV POSTINGS  /

72 characters width template ----------------------------------------->|

Reply via email to