Postgresql 在记录变量中选择多个行和列
在plpgsql函数中,如何在记录变量中选择多个行和列 例如,我想Postgresql 在记录变量中选择多个行和列,postgresql,plpgsql,postgresql-9.3,Postgresql,Plpgsql,Postgresql 9.3,在plpgsql函数中,如何在记录变量中选择多个行和列 例如,我想将两列(yearinteger和value)的多个实例选择到一个记录变量(yearvalues)中 *编辑-下面的代码只是一个较长函数的一部分,我需要变量yearvalues包含一个表中的多行和多列,从中我可以创建更多的变量 CREATE OR REPLACE FUNCTION fn_function () RETURNS TABLE () AS $$ DECLARE year c.year%TYPE; value
将两列(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;
plpgsql中没有表变量(至少在v10之前)
您可以使用临时表:
您可以用CTE(在简单情况下甚至子查询)替换单个查询的本地范围。“单个查询”可以包含多个命令(在数据修改CTE中)。这将是最有效的:
或者将游标与循环组合(考虑FNC-函数下的示例):
。。。当你运行这个函数时,会发生什么?(始终显示准确的错误消息文本)。如果函数返回一个表,为什么不使用一个只返回select
结果的sql
函数呢?或PL/pgSQL函数中的返回查询
?感谢您介绍各种选项;我想我正在寻找游标。你是什么意思?(至少到v9.4版)?这句话有点让人困惑。这是否意味着较新版本中有表变量?@user544262772:在撰写本文时,我怎么知道会有表变量?在版本10中仍然没有表变量,我不希望在将来的版本中发生变化。@ErwinBrandstetter我有一个问题,请你进入这个房间好吗?此邮件将被删除