在 PL/pgSQL 中将不同表中的多个字段作为单个记录返回需要使用以下命令构造自定义记录所需的字段组成。以下是实现此目的的方法:
使用 CREATE TYPE 语句定义记录类型以指定字段及其数据类型:
CREATE TYPE my_record_type AS ( field1 text, field2 integer, field3 boolean );
在SP中,使用DECLARE语句声明一个记录类型的变量,并填充其字段:
DECLARE result my_record_type; BEGIN SELECT field1, field2, field3 INTO result FROM table1; -- Retrieve and populate additional fields from other tables RETURN result; END
要从表中检索多行并将它们聚合到单个记录中,请考虑使用子查询。例如,要从用户表中检索并展平行:
DECLARE result my_record_type; BEGIN SELECT id, name FROM ( SELECT id, name FROM user WHERE school_id = InputSchoolId LIMIT 2 ) AS subquery INTO result; RETURN result; END
定义函数后,调用它来检索记录:
SELECT get_object_fields('name') AS record_output;
结果将是包含指定字段的记录
虽然不鼓励使用 CREATE TYPE 来实现多态结果,但您可以利用 RECORD 类型来获得灵活性。例如:
CREATE FUNCTION test_ret(a text, b text) RETURNS RECORD AS $$ DECLARE result RECORD; BEGIN IF LENGTH(a) < LENGTH(b) THEN result = (TRUE, (a || b)::text, 'a shorter than b'::text); ELSE result = (FALSE, (b || a)::text, NULL::text); END IF; RETURN result; END;$$ LANGUAGE plpgsql;
这允许返回具有不同列数的记录。
以上是如何使用 PL/pgSQL 从多个 PostgreSQL 表中检索和合并记录字段?的详细内容。更多信息请关注PHP中文网其他相关文章!