在 PostgreSQL 中创建系统标识符并将其传递给函数

Create and pass a system identifier to a function in PostgreSQL

提问人:Robbendebiene 提问时间:10/27/2023 最后编辑:Robbendebiene 更新时间:10/27/2023 访问量:36

问:

我的主要目标是仅在xml元素为空时创建/输出xml元素。如果它是空的,则应返回。我正在为此使用本机函数。因此,如果我调用它将返回,而在这种情况下,我的目标是返回。NULLxmlelement()SELECT xmlelement(name "my-element", NULL)<my-element/>NULL

我尝试简单地包装如下函数,以便当任何输入参数为:xmlelementNULLNULL

CREATE OR REPLACE FUNCTION xml_noempty_element(label name, data xml) RETURNS xml AS
$$
SELECT xmlelement(label, data)
$$
LANGUAGE SQL IMMUTABLE STRICT;

可悲的是,这并不能验证。

甚至可以创建一个采用系统标识符的 PostgreSQL 函数吗?如果是,我如何创建标识符/名称并将其传递给函数?


我知道我可以做如下代码来实现我的主要目标:

SELECT CASE
  WHEN EXISTS(SELECT FROM my_xml_rows) THEN
    xmlelement(name "my-element",
      ( SELECT xmlagg(xmlelement) FROM my_xml_rows )
    )
END;

但是,这将调用查询两次,我试图避免。

我想我的另一个选择是绕一圈。NULLIF((QUERY), '<my-element/>')

SQL XML POSTGRESQL

评论


答: 暂无答案