PostgreSQL 9.2를 사용하여 하나의 인수를 취하여 다중 열 테이블을 반환하는 함수를 정의했습니다. 이 함수를 CTE의 행에있는 여러 인수에 적용하고 싶습니다. 내가 얻는 결과는 하나의 튜플 열입니다. 원하는 여러 열은 아닙니다. 재치에 :레코드 유형 단일 열에서 값 분할/추출 사용자 정의 함수를 복수 행 CTE에 적용
SELECT myfunc(arg) FROM rows;
SELECT * FROM (select myfunc(arg) FROM rows) x;
을 그리고 모든 실패 다음 세 가지 (CTE :
sandbox=# CREATE FUNCTION myfunc(arg int) RETURNS table(col1 int, col2 int) AS
sandbox-# 'SELECT arg+1, arg+2'
sandbox-# LANGUAGE SQL;
CREATE FUNCTION
sandbox=# select * from myfunc(1);
col1 | col2
------+------
2 | 3
(1 row)
sandbox=# WITH rows AS (
sandbox(# SELECT 1 AS arg UNION SELECT 2 AS arg
sandbox(#)
sandbox-# SELECT * FROM (SELECT myfunc(arg) FROM rows) x;
myfunc
--------
(2,3)
(3,4)
(2 rows)
열팽창 계수 감안할 때, 다음과 같은 두 가지 SELECT
절은 유형 record
의 단일 열이있는 테이블로 서로 동일하게 평가 표시되지 않음) :
SELECT myfunc(arg).col1 FROM rows;
ERROR: syntax error at or near "."
LINE 4: SELECT myfunc(arg).col1 FROM rows;
^
SELECT col1 FROM (select myfunc(arg) FROM rows) x;
ERROR: column "col1" does not exist
LINE 4: SELECT col1 FROM (select myfunc(arg) FROM rows) x;
^
SELECT col1 FROM (SELECT * FROM (select myfunc(arg) FROM rows) x) y;
ERROR: column "col1" does not exist
LINE 4: SELECT col1 FROM (SELECT * FROM (select myfunc(arg) FROM row...
^
튜플의 단일 열에있는 값을 포함하는 다중 열 테이블을 얻는 방법은 무엇입니까?
빙고가 939 –