【发布时间】:2018-08-15 14:16:36
【问题描述】:
我有这些存储过程逻辑要实现:
CREATE OR REPLACE FUNCTION get_array(arraynumbers integer[])
RETURNS TABLE (name text) AS $$
DECLARE
index integer := 0
BEGIN
FOREACH index < arraynumbers
LOOP
SELECT e.name as empname FROM employee as e
WHERE e.id = arraynumbers[index]
LIMIT 1
name.push(empname)
ENDLOOP;
RETURN name;
END;
$$
LANGUAGE PLPGSQL;
目标是根据数组参数的长度进行循环,参数的每个索引将作为检索记录并将其推送到变量并将变量作为表返回的条件。
在PostgreSQL存储过程中正确的写法是什么?
【问题讨论】:
-
您希望不存在的
push()方法做什么? -
嗨 @a_horse_with_no_name 我想在每个循环中将 SELECT 的结果(这是一条记录)附加到一个变量中。
-
但是您将函数声明为
returns table那么为什么要将所有内容附加到单个(不存在的)变量中?
标签: sql postgresql stored-procedures