Thread: Stored function - send array as parameter to stored function

Stored function - send array as parameter to stored function

From
"hendra kusuma"
Date:
Hi,
I'm new here
I've been doing a little self-learning about postgresql
and find it very interesting

I've been trying to create a stored procedure that receive array as
parameter and find a good and working example on the web

the code looks like this

create or replace function iterate(a int[])
returns void as $$
begin
 for i in array_lower(a,1)..arry_upper(a,1) loop
   raise notice '%', a[i];
 end loop;
end;
$$ language plpgsql strict;

my problem is, how should I call this function?
I tried
select iterate(1,2)
select iterate([1,2])
select iterate({1,2})
none of them are working

how is it really to call this function

Thank you
Hendra

Re: Stored function - send array as parameter to stored function

From
brian
Date:
Yes, this one got me, also. Strangely, you need to do:

select iterate('{1,2}');

Also, you have a typo in your function: arry_upper(a,1)

b



hendra kusuma wrote:
> Hi,
> I'm new here
> I've been doing a little self-learning about postgresql
> and find it very interesting
>
> I've been trying to create a stored procedure that receive array as
> parameter and find a good and working example on the web
>
> the code looks like this
>
> create or replace function iterate(a int[])
> returns void as $$
> begin
>  for i in array_lower(a,1)..arry_upper(a,1) loop
>    raise notice '%', a[i];
>  end loop;
> end;
> $$ language plpgsql strict;
>
> my problem is, how should I call this function?
> I tried
> select iterate(1,2)
> select iterate([1,2])
> select iterate({1,2})
> none of them are working
>
> how is it really to call this function
>
> Thank you
> Hendra
>

Re: Stored function - send array as parameter to stored function

From
Tom Lane
Date:
brian <brian@zijn-digital.com> writes:
> Yes, this one got me, also. Strangely, you need to do:
> select iterate('{1,2}');

In reasonably modern versions of PG you could use an array constructor:

select iterate(array[1,2,3]);

            regards, tom lane