首页 > 解决方案 > 从函数返回多个类型?推荐的方法是什么?

问题描述

我第一次在空闲时间在 PL/PGSQL (PG 13.3) 中创建 PoC。我正在慢慢前进,但我现在想返回一个 SETOF Person_Found(类型),以便调用者可以“SELECT * FROM find_person()”并查看找到的人员列表和相应的列,就像标准选择一样。类型:

CREATE TYPE CONFIDENCE AS ENUM ('HIGHEST', 'HIGH', 'LOW');

CREATE TYPE PERSON_FOUND AS (
  person_id UUID,
  rank INT,
  confidence CONFIDENCE,
  last_update TIMESTAMPTZ
);

功能:

CREATE FUNCTION find_person_by_email(p_email TEXT,
                            p_names_rec RECORD,
                            p_phone TEXT,
                            p_document TEXT,
                            p_date_of_birth TIMESTAMPTZ)
RETURNS SETOF PERSON_FOUND AS $$                            
DECLARE  
-- Variables
BEGIN
  -- do the search here with different queries and tables and then COMBINE the result into PERSON_FOUND Types. 
  IF (conditions_satisfied) THEN
     --RETURN THE LIST OF PERSON_FOUND
  ELSE 
     RETURN NULL;
  END IF;
END
$$  LANGUAGE plpgsql;

当我组合不同的查询和循环以及其他函数来创建要返回的 PERSON_FOUND 类型的列表时,我对在 Pl/pgsql 中构建它的惯用方式感到困惑。

任何帮助将非常感激。

谢谢

标签: postgresqlplpgsql

解决方案


推荐阅读