Re: Array as parameter in plpgSQL functions

From: Christopher Sawtell <csawtell(at)xtra(dot)co(dot)nz>
To: Jie Liang <jliang(at)ipinc(dot)com>, Sveinung Haslestad <sveinung(dot)haslestad(at)swipnet(dot)se>
Cc: pgsql-sql(at)postgresql(dot)org
Subject: Re: Array as parameter in plpgSQL functions
Date: 2001-03-01 08:41:58
Message-ID: 01030121415800.31527@berty
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-sql

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 Sawtell
CELL PHONE 021 257 4451
ICQ UIN 45863470
EMAIL csawtell @ xtra . co . nz
CNOTES 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
<<--

In response to

Browse pgsql-sql by date

  From Date Subject
Next Message Blaise Carrupt 2001-03-01 13:04:55 BufTableDelete: BufferLookup table corrupted
Previous Message Oliver Elphick 2001-03-01 06:59:42 Re: int2+float8 problems