1

関数を作成し、クエリの変数結果を割り当てたい:

CREATE OR REPLACE FUNCTION GetData
(
    OUT outValue integer
)
AS $$
DECLARE
  records "Records";
BEGIN  
  records := (SELECT "Value1" FROM "Records");
  outValue := (SELECT sum("Value1") FROM records)
END;
$$ LANGUAGE plpgsql;

しかし、postgresql は次のように述べています。

"ERROR: subquery in an expression returned more than one row."

type の変数を宣言すると、<"Records"%ROWTYPE>同じ結果エラーが発生します。

クエリの結果で変数を宣言する方法は?

4

3 に答える 3

1

関数内に一時テーブルを作成し、入力後にクエリに使用できます。

create or replace function GetData()
returns integer
as $$
declare
    outValue int;
begin
    create temporary table records(Value1 int);

    insert into records
    select Value1 from Table1;

    outValue := (select sum(Value1) from records);

    return outValue;
end;
$$ language plpgsql;

sql fiddle demo

于 2013-11-03T16:23:01.807 に答える
1

クエリを組み合わせてみませんか?

...
BEGIN
  SELECT sum("Value1") INTO outValue FROM "Records";
END;
...
于 2013-11-02T20:18:49.433 に答える