将多个行和列选择为记录变量

时间:2014-07-25 06:20:41

标签: postgresql plpgsql postgresql-9.3

在plpgsql函数中,如何将多个行和列选入记录变量?

例如,我想将SELECT两列(yearintegervalue)的多个实例放入记录变量(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;

1 个答案:

答案 0 :(得分:3)

plpgsql中没有表变量(至少高达v10)。

您可以使用临时表:

您可以将CTE(或简单情况下的子查询)替换为单个查询的本地范围。 “单个查询”可以包含多个命令(在数据修改CTE中)。那将是最有效的:

或者将游标与循环结合起来(考虑 FNC - Function 下的示例):