Thread: Array as parameter in plpgSQL functions

Array as parameter in plpgSQL functions

From
"Sveinung Haslestad"
Date:
I need to pass an array to a function ( int4, variable number of elements) .
How do i declare the parameter, and how can i tell the numer of recieved elements?

Thanks
/Sveinung






Re: Array as parameter in plpgSQL functions

From
Jie Liang
Date:
e.g.

create function foo(_int4) returns int2 as'
declare
a _int4 alias for $1;
i int:=1;
begin
while a[i] loop
i:=i+1;
end loop;
return i-1;
end;
' language 'plpgsql';

you can call it by:

select foo('{1232131,12312321,3424234}');

you should get 3.

Jie LIANG

Internet Products Inc.

10350 Science Center Drive
Suite 100, San Diego, CA 92121
Office:(858)320-4873

jliang@ipinc.com
www.ipinc.com

On Wed, 31 Jan 2001, Sveinung Haslestad wrote:

> I need to pass an array to a function ( int4, variable number of elements) .
> How do i declare the parameter, and how can i tell the numer of recieved elements?
> 
> Thanks
> /Sveinung
> 
> 
> 
> 



Re: Array as parameter in plpgSQL functions

From
Christopher Sawtell
Date:
On Thu, 01 Feb 2001 09:47, Jie Liang wrote:
> e.g.
>
> create function foo(_int4) returns int2 as'
> declare
> a _int4 alias for $1;
> i int:=1;
> begin
> while a[i] loop
> i:=i+1;
> end loop;
> return i-1;
> end;
> ' language 'plpgsql';
>
> you can call it by:
>
> select foo('{1232131,12312321,3424234}');
>
> you should get 3.

In order to get it to work I had to alter it very slightly vis:-

chris=# create function array_element_count(_int4) returns integer as '
chris'#  declare
chris'#   a alias for $1;
chris'#   i integer;
chris'#  begin
chris'#   i := 1;
chris'#   while a[i] loop
chris'#    i := i+1;
chris'#   end loop;
chris'#  return i-1;
chris'#  end;' language 'plpgsql' with(isstrict,iscachable);
CREATE
chris=# select 
array_element_count('{59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,8
7}');array_element_count
---------------------                 29
(1 row)
  
 

-- 
Sincerely etc.,
NAME       Christopher SawtellCELL PHONE 021 257 4451ICQ UIN    45863470EMAIL      csawtell @ xtra . co . nzCNOTES
ftp://ftp.funet.fi/pub/languages/C/tutorials/sawtell_C.tar.gz
-->> Please refrain from using HTML or WORD attachments in e-mails to me 
<<--