相关疑难解决方法(0)

返回与plpgsql函数中的输入数组元素匹配的行

我想创建一个PostgreSQL函数,它执行以下操作:

CREATE FUNCTION avg_purchases( IN last_names text[] DEFAULT '{}' )
  RETURNS TABLE(last_name text[], avg_purchase_size double precision)
AS
$BODY$
DECLARE
  qry text;
BEGIN
qry := 'SELECT last_name, AVG(purchase_size) 
          FROM purchases
          WHERE last_name = ANY($1)
          GROUP BY last_name'
RETURN QUERY EXECUTE qry USING last_names;
END;
$BODY$
Run Code Online (Sandbox Code Playgroud)

但我在这里看到两个问题:

  1. 我不清楚数组类型是最有用的输入类型.
  2. 当我这样做时,这当前返回零行:

    SELECT avg_purchases($${'Brown','Smith','Jones'}$$);
    
    Run Code Online (Sandbox Code Playgroud)

我错过了什么?

arrays postgresql plpgsql aggregate-functions postgresql-9.2

3
推荐指数
1
解决办法
1637
查看次数

在单个参数中传递多个值

我想通过在单个参数上传递多个值来调用函数,如下所示:

SELECT * FROM jobTitle('270,378');
Run Code Online (Sandbox Code Playgroud)

这是我的功能。

CREATE OR REPLACE FUNCTION test(int)
RETURNS TABLE (job_id int, job_reference int, job_job_title text
                                            , job_status text) AS
$$
BEGIN
RETURN QUERY
select jobs.id,jobs.reference, jobs.job_title,
       ltrim(substring(jobs.status,3,char_length(jobs.status))) as status
FROM jobs ,company c
WHERE jobs."DeleteFlag" = '0'
and c.id= jobs.id and c.DeleteFlag = '0' and c.active = '1' 
and (jobs.id = $1 or -1 = $1)
order by jobs.job_title;
END;
$$ LANGUAGE plpgsql;
Run Code Online (Sandbox Code Playgroud)

有人可以提供语法帮助吗?甚至提供示例代码?

sql postgresql stored-procedures plpgsql parameter-passing

1
推荐指数
2
解决办法
3510
查看次数