You were correct below trigger worked. Giving reference for others.
CREATE OR REPLACE FUNCTION init() RETURNS TEXT AS $$
my $raw_row = "(\"col1\", \"col2\")";
my @new_row = ('5', '6');
my @col_types = ("integer", "character varying");
my $query = "INSERT INTO mytable $raw_row VALUES (\$1, \$2)";
my $prepared = spi_prepare($query, @col_types);
spi_exec_prepared($prepared, @new_row);
return "success";
$$ LANGUAGE plperl;
Thanks, Paresh
On 10/7/09, Alvaro Herrera <alvherre@commandprompt.com> wrote:
> Tom Lane escribió:
>
>> I'm not much of a Perl hacker, but I seem to recall that it's possible
>> to pass an array to a function in a way that will make the array
>> elements look like separate arguments. If you really need a dynamic
>> list of types and values, maybe there's some solution in that direction.
>
> Actually any time you pass an array as a parameter, the list is
> flattened and the function sees it as a plain list. If that doesn't
> seem to make sense, consider that if you pass two lists they will be
> flattened to a single list and you won't be able to tell where one
> ends and the other starts.
>
> If you really want two separate lists, you need to pass them as array
> references (i.e. \@myarray). I guess you could also pass an element
> count but that's not very perlish.
>
> --
> Alvaro Herrera http://www.CommandPrompt.com/
> PostgreSQL Replication, Consulting, Custom Development, 24x7 support
>