Thread: Can you use an array of variables in a function?

Can you use an array of variables in a function?

From
"Frank Millman"
Date:
Hi all
 
Is it possible to use an array of variables in a PL/pgSQL function?
 
Here is a trivial example of what I am trying to do.
 
------------------------
create or replace function fmfunc(int) returns int as '
  declare
    _int alias for $1;
    _ints int[3];
  begin
    _ints[1] = _int * 2;
    _ints[2] = _int * 4;
    _ints[3] = _int * 8;
    return _ints[3];
  end;'
language 'plpgsql';
------------------------
 
SELECT fmfunc(3) runs without any errors, but it returns null.
 
For debugging, I added the following line before the return -
  raise notice ''ints[1] = '', _ints[1];
 
I then get 'syntax error at or near "["'.
 
Platform is 7.4.1 on Redhat 9.
 
TIA for any advice.
 
Frank Millman

Re: Can you use an array of variables in a function?

From
Pavel Stehule
Date:
Hello,
You can use arrays in PL/pgSQL without problems. But You need first
init array on not NULL value.

CREATE OR REPLACE FUNCTION foo(int) RETURNS int AS $$
DECLARE x int[] = '{}';
BEGIN x[1] := $1;
  RETURN x[1];
END; $$ LANGUAGE plpgsql;

regards
Pavel


> Hi all
>
> Is it possible to use an array of variables in a PL/pgSQL function?
>
> Here is a trivial example of what I am trying to do.
>
> ------------------------
> create or replace function fmfunc(int) returns int as '
>   declare
>     _int alias for $1;
>     _ints int[3];
>   begin
>     _ints[1] = _int * 2;
>     _ints[2] = _int * 4;
>     _ints[3] = _int * 8;
>     return _ints[3];
>   end;'
> language 'plpgsql';
> ------------------------
>
> SELECT fmfunc(3) runs without any errors, but it returns null.
>