다음 코드 조각은 PL/R 함수로 전달되는 세 개의 배열을 만듭니다. 차라리 CREATE TYPE
를 사용하여 세 개의 값을 포함하는 각 요소에 하나 개의 어레이를 통과 할쿼리 결과를 배열로 반환
v_id integer[];
v_latitude double precision[];
v_longitude double precision[];
:로
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;
어레이 선언된다.
FOR ... LOOP
을 사용하지 않도록 어떻게 코드 하시겠습니까?
는 PL/R 함수의 첫 번째 줄은 다음과 같습니다
stations <- cbind(v_id, v_longitude, v_latitude)
내가 코드 줄을 제거하고 SELECT
쿼리를 단순화하고 싶습니다.
감사합니다.