int*_*ost 4 postgresql plpgsql postgresql-9.3
在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;
Run Code Online (Sandbox Code Playgroud)
plpgsql 中没有表变量(至少到 v10)。
您可以使用临时表:
您可以用 CTE(甚至简单情况下的子查询)替换单个查询的本地范围。“单个查询”可以包含多个命令(在数据修改 CTE 中)。那将是最有效的:
或者将游标与循环组合(考虑FNC - Function下的示例):
| 归档时间: |
|
| 查看次数: |
20761 次 |
| 最近记录: |