Tôi đang cố gắng trả về nhiều bản ghi bằng cách sử dụng loại dữ liệu RECORD, có cách nào để tôi có thể thêm vào RECORD và thêm / nối một giá trị mới với mỗi lần lặp vào RECORD này.
nghĩa là, tôi muốn thêm vào rec
để rec
trở thành một tập hợp các hàng khi vòng lặp kết thúc, mà tôi chỉ có thể TRẢ LẠI ở cuối chức năng của mình. Hiện tại, tôi đang làm điều này -
SELECT temp_table.col1, temp_table.col2, temp_table.col3
INTO rec
FROM temp_table
WHERE temp_table.col3 = false;
mã đầy đủ của tôi ở đây:
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;
Sản lượng hiện tại sau SELECT validation();
validation
(crea_ddf,8095,f)
Sản phẩm chất lượng
validation
(crea_ddf,8095,f)
(some_source_system,some_count,f)
(some_other_source_system,some_count,f)
(.....)