Sometimes you just can't see the wood for the trees
:-)
More sleep needed!

Thanks all,

Marty

 --- "Sterin, Ilya (I.)" <[EMAIL PROTECTED]> wrote: 
> Or better yet
> 
> $sth->bind_param($_, $execute_args[$_]) for
> (0..$#execute_args);
> 
> Arrays start from zero.
> 
> Ilya
> 
> -----Original Message-----
> From: Tim Bunce [mailto:[EMAIL PROTECTED] 
> Sent: Tuesday, September 14, 2004 11:56 AM
> To: Martin Moss
> Cc: Tim Bunce; Jenda Krynicky; [EMAIL PROTECTED]
> Subject: Re: bind_param_inout
> 
> 
> On Tue, Sep 14, 2004 at 02:33:41PM +0100, Martin
> Moss wrote:
> > I've got one further issue thats driving me nuts.
> > 
> > Here is the code I'm running,
> > 
> >  $sth->bind_param($_, $execute_args[$_]) for
> ([EMAIL PROTECTED]);
> 
> Actually that needs to be $execute_args[$_-1]
> 
> That may fix your other problem. If not please post
> a small
> self-contained example.
> 
> Tim.
> 
> >   $sth->bind_param_inout(scalar
> @execute_args+1,\$new_id,38);
> 
> > N.b. using scalar @execute_args produces rebind
> > errors, unless I do the +1." Can you explain why I
> > shouldn't use the +1??
> > 
> > Here is the SQL I'm generating:-
> > 
> > INSERT INTO table (CompID, User_ID, Referral,
> Newregistration, 
> > Phonecontact, Created, Updated) VALUES
> (COMPID_seq.nextval, ?, ?, ?, 
> > ?, from_unixdate_func(1095168082),
> > from_unixdate_func(1095168082)) returning CompID
> into
> > ?
> > 
> > And here is a dump of the @execute_args array
> > 
> > $VAR1 = 3738;
> > $VAR2 = 'Y';
> > $VAR3 = 'Y';
> > $VAR4 = 'Y';
> > 
> > When I run this query I get the following error:-
> > 
> > DBD::Oracle::st execute failed: ORA-01722: invalid
> > number (DBD ERROR: OCIStmtExecute) at 
> >
>
/opt/apps/embperl2-apache-matt/perl/perl-5.6.1/lib/site_perl/5.6.1/III
> > /Oracle/Object.pm
> > line 974.
> > 
> > If I run the insert without the column which
> contains
> > a number (e.g. run the query without the User_ID
> > value, so that ALL the variables passed to the
> binds
> > are of type varchar (perl string) it works. And if
> I
> > run the query for only Numbers it works, but as
> soon
> > as I try to have strings and numbers inside my
> > @execute_args array my code breaks. We're running
> > Oracle 8i.
> > 
> > If I expressly say to_num(?) for the num column
> Then
> > the query works when the rest of the columns are
> > strings.
> > 
> > This whole issue seems to be 'quirky' and it's
> > probably my lack of Oracle thats causing me to do
> > somethign stupid, but I can't tell what.
> > 
> > Any help would be so much appreciated!
> > 
> > Marty
> > 
> > 
> >  --- Martin Moss <[EMAIL PROTECTED]>
> wrote:
> > > Thanks for you help,
> > > 
> > > Marty
> > > 
> > > 
> > >  --- Tim Bunce <[EMAIL PROTECTED]> wrote:
> > > > On Tue, Sep 14, 2004 at 12:34:09AM +0200,
> Jenda
> > > > Krynicky wrote:
> > > > > From: Tim Bunce <[EMAIL PROTECTED]>
> > > > > > 
> > > > > > Use bind_param() or bind_param_inout() for
> all
> > > > the params
> > > > > > and then call execute() with no arguments.
> > > > > > 
> > > > > > Tim.
> > > > > 
> > > > > I wonder ... how about adding a method
> > > > bind_params() like this:
> > > > > 
> > > > > sub bind_params {
> > > > >       my $sth = shift;
> > > > >       my $pos = (ref($_[0]) ? 1 : shift);
> > > > >       for my $param (@{$_[0]}) {
> > > > >               $sth->bind_param($pos++, $param);
> > > > >       }
> > > > > }
> > > > 
> > > > No need. See below.
> > > > 
> > > > > So that this could be shortened to
> > > > > 
> > > > >       $sth->bind_params([EMAIL PROTECTED]); #
> default
> > > > position is 1
> > > > > 
> > > >
> > >
> >
>
$sth->bind_param_inout($#execute_args+1,\$new_id,38);
> > > > 
> > > > Without adding any new methods it can be
> shortened
> > > > to
> > > > 
> > > >   $sth->bind_param($_, $execute_args[$_]) for
> ([EMAIL PROTECTED]);
> > > >   $sth->bind_param_inout($#execute_args+1,
> > > \$new_id,
> > > > 38);
> > > > 
> > > > I'll add that to the docs.
> > > > 
> > > > Tim.
> > > > 
> > > > p.s. I'd use "scalar @execute_args" or
> > > > "[EMAIL PROTECTED]" instead of
> "$#execute_args+1".
> > > >  
> > > 
> > > 
> > >   
> > >   
> > >           
> > >
> >
>
___________________________________________________________ALL-NEW
> > > Yahoo! Messenger - all new features - even more
> fun!  
> > > http://uk.messenger.yahoo.com
> > >  
> > 
> > 
> >     
> >     
> >             
> >
>
___________________________________________________________ALL-NEW
> 
> > Yahoo! Messenger - all new features - even more
> fun!  
> > http://uk.messenger.yahoo.com
> > 
>  


        
        
                
___________________________________________________________ALL-NEW Yahoo! Messenger - 
all new features - even more fun!  http://uk.messenger.yahoo.com

Reply via email to