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

在PostgreSQL函数中声明并返回自定义类型,第1张

在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


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5037473.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-11-15
下一篇 2022-11-15

发表评论

登录后才能评论

评论列表(0条)

保存