Re: Need help in spi_prepare errors - Mailing list pgsql-general

From paresh masani
Subject Re: Need help in spi_prepare errors
Date
Msg-id a9d94e070910072107h3e757c51wbf2c87fab2fbcc1b@mail.gmail.com
Whole thread Raw
In response to Re: Need help in spi_prepare errors  (Alvaro Herrera <alvherre@commandprompt.com>)
List pgsql-general
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
>

pgsql-general by date:

Previous
From: "Joshua D. Drake"
Date:
Subject: Re: pg_dump with 1100 schemas being a bit slow
Next
From: "A. Kretschmer"
Date:
Subject: Re: Using complex PRIMARY KEY