RECORD 데이터 형식을 사용하여 여러 레코드를 반환하려고하는데 RECORD에 추가 하고이 RECORD에 각 반복마다 새로운 값을 추가 / 추가 할 수있는 방법이 있습니까?
즉, 루프가 끝나면 행 세트가 rec
되도록 추가하고 싶습니다 rec
.이 기능은 함수 끝에서 반환 할 수 있습니다. 현재, 나는 이것을하고있다-
SELECT temp_table.col1, temp_table.col2, temp_table.col3
INTO rec
FROM temp_table
WHERE temp_table.col3 = false;
내 전체 코드는 다음과 같습니다.
CREATE OR REPLACE FUNCTION validation()
RETURNS RECORD AS $$
DECLARE
rec RECORD;
temp_row RECORD;
BEGIN
CREATE TEMPORARY TABLE temp_table (col1 TEXT, col2 INTEGER, col3 BOOLEAN) ON COMMIT DROP;
FOR temp_row IN SELECT * FROM staging.validation
LOOP
RAISE NOTICE 'sql: %', temp_row.sql;
EXECUTE format('INSERT INTO temp_table %s', temp_row.sql);
IF (SELECT DISTINCT temp_table.col3 FROM temp_table WHERE temp_table.col3 = false)=false THEN
RAISE NOTICE 'there is a false value';
SELECT temp_table.col1, temp_table.col2, temp_table.col3
INTO rec
FROM temp_table
WHERE temp_table.col3 = false;
END IF;
END LOOP;
RETURN rec;
END; $$
LANGUAGE plpgsql;
이후의 전류 출력 SELECT validation();
validation
(crea_ddf,8095,f)
원하는 출력
validation
(crea_ddf,8095,f)
(some_source_system,some_count,f)
(some_other_source_system,some_count,f)
(.....)