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

Reply via email to