Thread

  1. Array as parameter in plpgSQL functions

    Sveinung Haslestad <sveinung.haslestad@swipnet.se> — 2001-01-31T20:30:09Z

    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
    
    
    
    
    
    
  2. Re: Array as parameter in plpgSQL functions

    Jie Liang <jliang@ipinc.com> — 2001-01-31T20:47:48Z

    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
    > 
    > 
    > 
    > 
    
    
    
  3. Re: Array as parameter in plpgSQL functions

    Christopher Sawtell <csawtell@xtra.co.nz> — 2001-03-01T08:41:58Z

    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 
    <<--