首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从ids数组中获取PostgreSQL中的临时/虚拟表

如何从ids数组中获取PostgreSQL中的临时/虚拟表
EN

Stack Overflow用户
提问于 2018-12-20 18:14:10
回答 1查看 339关注 0票数 0

Oracle查询:

代码语言:javascript
复制
    CREATE OR REPLACE FUNCTION case_filter(p_account_id IN DOUBLE PRECISION
                  ,  p_case_type_id   IN DOUBLE PRECISION
                  ,  p_activity       IN VARCHAR(4000) DEFAULT NULL
                  ,  p_step           IN VARCHAR(4000) DEFAULT NULL
                  ,  p_char_fld_obj   IN ct_char_obj DEFAULT NULL
                  ,  p_num_fld_obj    IN ct_num_obj DEFAULT NULL
                  ,  p_from_date_fld_obj   IN ct_date_obj DEFAULT NULL
                  ,  p_to_date_fld_obj   IN ct_date_obj DEFAULT NULL)
  RETURNS number_tab_t
 AS
$BODY$
DECLARE
  l_case_ids number_tab_t;
  l_case_ids_local number_tab_t;
 BEGIN
    select array_agg(ccase.case_id) INTO l_case_ids
          from ct_case ccase
              INNER JOIN ct_case_type casetype
                 on (casetype.case_type_id = ccase.case_type_id and casetype.account_id = p_account_id)
                  WHERE  ccase.case_type_id = coalesce(p_case_type_id, ccase.case_type_id);
  l_case_ids_local := l_case_ids;
  IF p_employee IS NULL THEN
    RETURN SET(l_case_ids);
  ELSE
     SELECT DISTINCT array_agg(case_id) INTO l_case_ids
     FROM (SELECT case_id
           FROM    employee_data ed
                INNER JOIN  ct_case c
                    ON (c.employee_id = ed.employee_id AND ed.account_id = p_account_id)
                INNER JOIN l_case_ids_local () bc
                    ON (c.case_id = bc.column_value)
WHERE REGEXP_REPLACE(UPPER(ed.last_name || ',' || ed.first_name || ed.middle_name), '[^A-Z,]', '') LIKE '%'|| replace(REGEXP_REPLACE(upper(p_employee), '[^A-Z,]',''),',','%,')|| '%') as re;
  END IF;
  RETURN SET(l_case_ids);
 END;
$BODY$ 
LANGUAGE plpgsql;

因为我们要将这个查询迁移到PostgreSQL,所以我们遇到了表函数的问题。PostgreSQL不直接支持table(整数集合)在PostgreSQL中有其他选择吗?谢谢。

EN

回答 1

Stack Overflow用户

发布于 2018-12-20 18:22:27

只需删除TABLE操作符并使用l_case_ids_local()

代码语言:javascript
复制
INNER JOIN  l_case_ids_local() bc
            ON (c.case_id = bc.col) -- use the column name as 
                                    -- defined in the function. 
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53866572

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档