SELECT 多行和多列到一个记录变量中

int*_*ost 4 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;
Run Code Online (Sandbox Code Playgroud)

Erw*_*ter 6

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

您可以使用临时表:

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

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