Postgresql

Postgresql 函式試圖插入 1 行而不是 2 行

  • June 18, 2014

Postgresql 9.3,Mac OS X 10.6.7

我創建了這個函式,我想將兩個結果插入同一行。顯然,我將它插入 2 行的方式。

首先,這是表 T1:

test_app_development=# select * from T1;
  name  | age | id
 -------+-----+----
  jim   |  50 |  1
 bill   |  55 |  2
  Ed    |  35 |  3
  joe   |  30 |  4
 dave   |  45 |  5
 steve  |  38 |  6
  (6 rows)

現在的功能:

 create or replace function stats_test() returns numeric as $$
   begin
    insert into stats(stdv) select stddev(age) from T1;
    insert into stats(ave_age) select avg(age) from T1;
    return 1;
   end;
$$ language plpgsql;

以下是函式的結果:

select stats_test();

test_app_development=# select * from stats;
   ave_age | id | stdv 
  ---------+----+-------
           |  1 | 9.496
   42.167  |  2 |     
  (2 rows)

我嘗試了變化,但沒有運氣:

 insert into stats(ave_age,stdv) select avg(age), stddev(age) from T1;

我已經用這個功能試過了,它對我來說很好用。

create or replace function stats_test() returns numeric as $$
 begin
   insert into stats(ave_age, stdv) select avg(age), stddev(age) from "T1";
   return 1;
 end;
$$ language plpgsql

引用自:https://dba.stackexchange.com/questions/68421