栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

在PostgreSQL函数中声明并返回自定义类型

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

在PostgreSQL函数中声明并返回自定义类型

您尝试使用的语法对Postgres而言是陌生的。

您的代码比需要的复杂得多。使用一个简单的SQL函数:

CREATE OR REPLACe FUNCTION get_details_for_widget(widgetid integer)  RETURNS TABLE (id int, contact_id int, priority int, contact text)$func$   SELECT d.id, d.contact_id, d.priority, o.contact   FROM   widget_details d   JOIN   widget_owner   o ON o.id = d.contact_id   WHERe  d.rid = widgetid   -- where does widgetid come from?   AND    d.active_yn = 't'   ORDER  BY d.priority$func$ LANGUAGE sql

如此简单的功能根本不需要plpgsql。请改用普通的SQL函数。

定义一个 临时排式

RETURNS TABLE()
。由于您没有提供表定义,因此我临时使用了列类型。这同样适用于plpgsql函数。

还:

  • 使用适当的

    JOIN
    条件以获得更好的可读性。

  • 使用表别名简化查询。

  • 将数据类型

    boolean
    用于
    widget_details.active_yn

布尔值

如评论中所阐明的,它已经是一个布尔列。我建议使用

TRUE
/
FALSE
代替字符串文字’t’/’f’进行数据输入-
引用有关布尔类型的手册:

关键字

TRUE
FALSE
是首选(与SQL兼容)的用法。

WHERe
子句中,每个表达式都将求值为
boolean
结果。
TRUE
合格
FALSE
或不合格
NULL
。因此,对于
boolean
类型,您可以简化:

   AND    d.active_yn = TRUE

只是:

   AND    d.active_yn


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/415145.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号