Can you use an array of variables in a function?

Started by Frank Millmanover 21 years ago2 messagesgeneral
Jump to latest
#1Frank Millman
frank@chagford.com

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

#2Pavel Stehule
pavel.stehule@gmail.com
In reply to: Frank Millman (#1)
Re: Can you use an array of variables in a function?

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

Show quoted text

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.