Stored function - send array as parameter to stored function

Started by hendra kusumaover 17 years ago3 messagesgeneral
Jump to latest
#1hendra kusuma
penguinroad@gmail.com

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

#2brian
brian@zijn-digital.com
In reply to: hendra kusuma (#1)
Re: Stored function - send array as parameter to stored function

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:

Show quoted text

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

#3Tom Lane
tgl@sss.pgh.pa.us
In reply to: brian (#2)
Re: Stored function - send array as parameter to stored function

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