Hello, If I understand correctlyy execute_array is to do many INSERT at once AND to contain all colums ? It seem it could could what I want, then...
Example from http://search.cpan.org/~timb/DBI/DBI.pm#bind_param_array $dbh->{RaiseError} = 1; # save having to check each method call $sth = $dbh->prepare("INSERT INTO staff (first_name, last_name, dept) VALUES(?, ?, ?)"); $sth->bind_param_array(1, [ 'John', 'Mary', 'Tim' ]); $sth->bind_param_array(2, [ 'Booth', 'Todd', 'Robinson' ]); $sth->bind_param_array(3, "SALES"); # scalar will be reused for each row $sth->execute_array( { ArrayTupleStatus => \my @tuple_status } ); Looks interesting but I think I found a better solution using my code... See next email Denis John Scoles a écrit : > I think you want is the |execute_array| <#___top> command > > however you can not use it like this. > > It would be more like this > > SQL='Insert into aTable (Y,X) values (?,?) > my $tuples = $sth->execute_array( { ArrayTupleStatus => \my > @tuple_status }, \...@y_values, \...@x_values ); > > > In your case below you want to bind a single parameter to an array. > You might have to use |bind_param_array| <#___top> for that > > cheers > > Denis BUCHER wrote: >> Tim Bunce a écrit : >> >>>> Does someone knows if it's possible to specify an array when >>>> executing a >>>> prepared statement ? >>>> >>> The question seems confused... >>> >> >> Yes was difficult to explain ;-) >> >> >>>> $sth->execute(%array_data) >>>> >>> %array_data isn't an array, it's a hash. >>> See http://perldoc.perl.org/perldata.html >>> >> >> Yes absolutely, "associative array" i.e. "hash". >> I didn't developped in perl for a while... >> >> >>>> instead of : >>>> $sth->execute($array_data["firstname"],array_data["lastname"]) >>>> >>> Square brackets are used to access array elements, but in that case the >>> value in the square brackets must be an integer. >>> >> >> Oh yes sorry... >> >> >>> It looks like you're trying to use a hash. For that you'd use curly >>> braces, like this: >>> >>> $sth->execute( $hash_data{"firstname"}, $hash_data{"lastname"} ); >>> >>> Using 'hash slice' syntax (http://perldoc.perl.org/perldata.html#Slices) >>> you can shorten to: >>> >>> $sth->execute( @hash_data{"firstname", "lastname"} ); >>> >> >> Ok I didn't know "hash slice" syntax, that's very interesting... >> >> What I want is to get the whole hash, therefore maybe what I want to do >> is this ? >> >> $sth->execute( @hash_data ); >> >> In fact I should explain what I am trying to do : >> >> #SELECT FROM database 1 and INSERT INTO database 2... >> while (@row = $sth_source->fetchrow_array()) >> { >> @array_data = @row; >> # INSERT >> $sth_pgsql->execute(@array_data) or die ; >> } >> >> What do you think ? >> >> Denis >> > Denis Bucher -- Denis Bucher Horus Digital Solutions sàrl Each problem has a solution ___________________________________________________________________________ Tél. +41-22-8000625 Fax: +41-22-8000622 www.hsolutions.ch