ฉันกำลังพยายามส่งคืนหลายระเบียนโดยใช้ชนิดข้อมูล 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)
(.....)