[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 メーリングリストの案内