如何声明变量来存储列数据

时间:2018-02-01 12:08:29

标签: postgresql

我需要在postgresql中使用一个可以存储列数据的变量。 我现在正在使用它:

DECLARE 
   var_tmp numeric(1);
SELECT number FROM table_tmp;

现在我在table_tmp.number中有多个数据,但我只获得var_tmp变量中列的最后一个值。 我想要实现的是从该列获取所有数据到我的变量。 例如,如果我在table_tmp.number中有10行,那么我想将所有10行分配给var_tmp变量。 有没有办法做到这一点?我应该以其他方式宣布吗?

2 个答案:

答案 0 :(得分:2)

变量只能包含一个值。如果需要存储多个值,则需要一个数组:

DECLARE 
   var_tmp numeric[];
BEGIN
...
   SELECT array_agg(number) 
      into var_tmp 
   FROM table_tmp;

答案 1 :(得分:1)

你必须使用临时表。

  CREATE TEMP TABLE table_tmp(
   var_tmp numeric(1)
);

SELECT number INTO table_tmp FROM orig_table ;


 or


CREATE TEMP TABLE table_tmp AS
SELECT number
FROM orig_table;