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

将标签数组传递给plpgsql函数,并在WHERe条件下使用

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

将标签数组传递给plpgsql函数,并在WHERe条件下使用

您实际上 没有 返回 结果。您将为此使用

RETURN QUERY EXECUTE

但是您不需要在这里以动态SQL开头…

CREATE OR REPLACe FUNCTION get_items_by_tag(VARIADIC tags text[])  RETURNS TABLE (id int, title text, tag text[]) AS$func$BEGIN   IF array_length(tags, 1) > 0 THEN      -- NO need for EXECUTE      RETURN QUERY      SELECT d.id, d.title, array_agg(t.title)      FROM   items d      JOIN   item_tags dt ON dt.item_id = d.id      JOIN   tags t       ON t.id = dt.tag_id      AND    t.title = ANY ($1)     -- use ANY construct      GROUP  BY d.id;    -- PK covers whole table      -- array_to_string(tags, ',') -- no need to convert array with ANY-- ELSE ...   END IF;END$func$  LANGUAGE plpgsql;

用实际数组调用:

SELECt * FROM get_items_by_tag(VARIADIC '{tag1,tag2}'::text[]);

或致电列出项目(“字典”):

SELECt * FROM get_items_by_tag('tag1', 'tag2');

不知道为什么有

IF array_length(tags, 1) > 0 THEN
,但是可能被完全取代
IF tags IS NOT NULLTHEN
或根本没有
IF
,然后跟进
IF NOT FOUND THEN



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

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

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