postgres-database に次の機能があります。
CREATE OR REPLACE FUNCTION getNearestPoints(float[], float[], float[], float[], int)
RETURNS SETOF record AS $$
DECLARE
i INT;
ret RECORD;
BEGIN
FOR i IN 1..$5 LOOP
FOR ret IN EXECUTE 'SELECT height, ST_Y(point), ST_X(point) FROM heights
WHERE ST_Intersects(ST_MakeEnvelope(' || $1[i] || ',' || $2[i] || ',' || $3[i] || ',' || $4[i] || ', 4326), point)' LOOP
RETURN NEXT ret;
END LOOP;
END LOOP;
RETURN;
END;
$$ LANGUAGE plpgsql;
クエリが行を返さない場合、各列のレコードにデフォルト値を返したい (例: (-2000, -181, -181))。
レコードとの合体は不可能のようです。
どうすればこれを行うことができますか?