次のコード スニペットは、PL/R 関数に渡される 3 つの配列を作成します。
FOR s_id, s_latitude, s_longitude IN
SELECT
s.id,
s.latitude_decimal,
s.longitude_decimal
FROM
climate.station s
WHERE
s.applicable AND
s.latitude_decimal BETWEEN box.latitude_min AND box.latitude_max AND
s.longitude_decimal BETWEEN box.longitude_min AND box.longitude_max
LOOP
SELECT array_append( v_id, s_id ) INTO v_id;
SELECT array_append( v_latitude, s_latitude ) INTO v_latitude;
SELECT array_append( v_longitude, s_longitude ) INTO v_longitude;
END LOOP;
配列は次のように宣言されます。
v_id integer[];
v_latitude double precision[];
v_longitude double precision[];
むしろCREATE TYPE
、各要素に 3 つの値を含む 1 つの配列を使用して渡したいと思います。
を使用しないように、これをどのようにコーディングしますFOR ... LOOP
か?
PL/R 関数の最初の行は次のとおりです。
stations <- cbind( v_id, v_longitude, v_latitude )
SELECT
そのコード行を削除して、クエリを簡素化したいと思います。
ありがとうございました。