小编Chr*_*ein的帖子

PL/pgSQL 函数的输入表

我想使用带有表和几列的 plpgsql 函数作为输入参数。这个想法是将表格分成块,并对每个部分做一些事情。

我尝试了以下功能:

CREATE OR REPLACE FUNCTION my_func(Integer)
  RETURNS SETOF my_part
AS $$
DECLARE
out my_part;
BEGIN
  FOR i IN 0..$1 LOOP
    FOR out IN
    SELECT * FROM my_func2(SELECT * FROM table1 WHERE id = i)
    LOOP
       RETURN NEXT out;
   END LOOP;
  END LOOP;
  RETURN;
END;
$$
LANGUAGE plpgsql;
Run Code Online (Sandbox Code Playgroud)

my_func2() 是在每个较小的部分上做一些工作的函数。

CREATE or REPLACE FUNCTION my_func2(table1) 
  RETURNS SETOF my_part2 AS
$$ 
BEGIN
RETURN QUERY
SELECT * FROM table1;
END
$$
LANGUAGE plpgsql;
Run Code Online (Sandbox Code Playgroud)

如果我运行:

SELECT * FROM my_func(99);
Run Code Online (Sandbox Code Playgroud)

我想我应该收到为每个 ID …

sql postgresql plpgsql

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

标签 统计

plpgsql ×1

postgresql ×1

sql ×1