Thread: Can you use an array of variables in a function?
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';
------------------------
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];
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
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. >