[pgsql-jp: 30387] Re: はじめましてPostgresql 初心者です。plpgsql で教えてほしいのですが。

Hideyuki Kawashima kawasima @ ayu.ics.keio.ac.jp
2003年 7月 4日 (金) 18:56:10 JST


こんなんで、どうでしょうか?

drop table hoge;
drop function geho();
create table hoge (id int4, cat int2, name char(50), price int4);
insert into hoge values (0, 0, 'hoge', 0);
insert into hoge values (0, 1, 'hoge', 0);
insert into hoge values (0, 0, 'hoge', 0);
insert into hoge values (0, 0, 'hoge', 0);
create function geho () returns float4 as '
declare
  test float4;
begin
  perform * from hoge;
  if found then
  select into test
  avg(cat)
  from hoge where cat = 1; 
  end if;
  return test;
end;
' language 'plpgsql';


From: "Masao" <me @ ansei.jp>
Subject: [pgsql-jp: 30374] はじめましてPostgresql 初心者です。plpgsql で教えてほしいのですが。
Date: Thu, 3 Jul 2003 19:20:31 +0900
Message-ID: <000d01c3414c$bb98f770$4664a8c0 @ ansei.jp>

> MS-SQLからPostgreSQLに転向ほやほやのものです。
> 
> いま、plpgsqlで四苦八苦しています。
> 
> 質問(1)
> SELECT で返ってくる値を変数に格納したいのですが、
> どうすればいいのでしょうか?
> 
> たとえば
> 下記のテーブル [ shinamono ] があったとします。
> -------------------
> id         int4
> cat       int2
> name    char(50)
> price    int4
> -------------------
> このテーブルのcatが 1 の商品合計を知りたいのです。
> MS-SQLですと
> 
> DECLARE @sum
> SELECT @sum = sum(price) from shinamono where cat = 1
> 
> 質問(2)
> SELECT の結果がNullかどうかでIf分岐したいのです。
> MS-SQL の場合
> if exists ( SELECT * FROM shinamono where cat = 1)
>   BEGIN
>     'Exists=trueの場合の処理
>   END
> Else
>   BEGIN
>     'Exists=falseの場合の処理
>   END
> 
> すみませんが教えてもらえますでしょうか?
> よろしくお願いします。
> 
> Kappa Ohara
> me @ ansei.jp
> 
> 

-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
川島 英之 (KAWASHIMA Hideyuki) <kawasima @ ayu.ics.keio.ac.jp>
開放環境科学専攻 コンピュータ科学専修 安西・山崎・今井研究室
慶應義塾大学大学院 理工学研究科 後期博士課程
http://www.ayu.ics.keio.ac.jp/members/kawasima



pgsql-jp メーリングリストの案内