postgresql - 从函数返回多个类型?推荐的方法是什么?
问题描述
我第一次在空闲时间在 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 中构建它的惯用方式感到困惑。
任何帮助将非常感激。
谢谢
解决方案
推荐阅读
- c++ - C++ Concept, how to check a constexpr static int is equal to 1, or similar...? Clang disagrees with GCC and MSVC
- laravel - Laravel Socialite Discord Provider 抛出 code_verifier 错误
- reactjs - 我的反应应用程序的本地主机似乎没有打开..它一直在我的浏览器中加载
- docker - 如何在未预定义所述图像的情况下拥有基于同一图像的多个容器?(即,它是从特定的 Dockerfile 构建的)
- reactjs - 反应自定义钩子指的是不正确的功能
- vuejs3 - Vue 3 组合 API:Array.length 无反应
- python - Pyinstaller exe 不能在 dist 文件夹之外工作
- file - BlueZone 命令将整个屏幕内容复制到文本文件
- intellij-idea - 开始新方法时 IntelliJ 红色波浪下划线
- java - 如何从 Discord OAUTH2 获取响应并将其转换为我自己的 UserDetails,我可以在整个代码中使用它