在plpgsql函数中,如何将多个行和列选入记录变量?
例如,我想将SELECT
两列(yearinteger
和value
)的多个实例放入记录变量(yearvalues
)。
*编辑 - 以下代码只是更长函数的一部分,我需要变量yearvalues
来包含表格中的多个行和列,我可以从中创建更多变量
CREATE OR REPLACE FUNCTION fn_function ()
RETURNS TABLE () AS $$
DECLARE
year c.year%TYPE;
value c.value%TYPE;
yearvalues record;
BEGIN
FOR yearvalues IN
SELECT c.year, c.value FROM c
LOOP
END LOOP;
-- creation of additional variables from the yearvalues variable
END;
$$ LANGUAGE plpgsql;
答案 0 :(得分:3)
plpgsql中没有表变量(至少高达v10)。
您可以使用临时表:
您可以将CTE(或简单情况下的子查询)替换为单个查询的本地范围。 “单个查询”可以包含多个命令(在数据修改CTE中)。那将是最有效的:
或者将游标与循环结合起来(考虑 FNC - Function 下的示例):