मैं RECORD डेटा प्रकार का उपयोग करके कई रिकॉर्ड वापस करने की कोशिश कर रहा हूं, क्या कोई ऐसा तरीका है जिससे मैं RECORD में शामिल हो सकता हूं और इस RECORD में प्रत्येक पुनरावृत्ति के साथ एक नया मान जोड़ / जोड़ सकता हूं।
यही है, मैं चाहता हूं कि लूप खत्म होने पर पंक्तियों का एक सेट बन rec
जाए rec
, जिसे मैं अपने फ़ंक्शन के अंत में केवल RETURN कर सकता हूं। वर्तमान में, मैं यह कर रहा हूँ -
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)
(.....)