Вы не можете получить доступ к таким элементам массива. $1
представляет целый массив, поэтому вам нужно сделать что-то вроде $1[1], $1[2], $1[3]
вместо$1, $2, $3
Поэтому попробуйте следующее:
CREATE or replace FUNCTION get_data(text[])
RETURNS TABLE(sheet_no text,type text,road_name text,lon text,lat text)
AS $$
DECLARE
sql text;
BEGIN
sql ='set session "myapp.user" ='||$1[1];
execute sql;
update tbl_encroachment
set landuse = $1[2]
where tbl_encroachment.unique_land_parcel_no = $1[3]
and tbl_encroachment.parcel_sub_division = $1[4];
RETURN QUERY
select foo.sheet_no,foo.type,foo.road_name,foo.lon,foo.lat
from tbl_encroachment as foo
where foo.unique_land_parcel_no = $1[3]
and foo.parcel_sub_division = $1[4];
RETURN;
end
$$ LANGUAGE plpgsql;