[pgsql-jp: 25451] PL/pgSQLで一時テーブルの作成、挿入、削除の問題
SATO Hiroyuki
hiroyuki @ navitime.co.jp
2002年 3月 28日 (木) 12:33:12 JST
初めまして。佐藤博之と申します。
次のような現象で困っております。
PL/pgSQLの関数で、一時テーブルを作成し、作成したテーブルに行
を挿入し、作成したテーブルを削除しています。この関数を1回目
に実行したときは、正常に動作するのですが、2回目以降動作しま
せん。
実際に実現したいことは、一旦一時テーブルに動的SQLによる結果
を保存し、それを使って計算し、その結果を関数の返却値としたい
のです。
このような使用方法に問題があるのでしょうか?対応策など、アド
バイスいただけますと、ありがたいです。宜しくお願い致します。
実行環境は、
Windows 2000
Cygwin
PostgreSQL 7.1.3-2
です。
テストしたソースと結果を下記に引用します。
(↓ここから:ソース↓)
create function test()
returns double precision as'
declare
-- val double precision;
val float8;
begin
create temp table test(value double precision);
insert into test values(random());
insert into test values(random());
select into val sum(value)from test;
drop table test;
return val;
end;
' language 'plpgsql';
(↑ここまで:ソース↑)
(↓ここから:結果↓)
a=# select test();
test
------------------
1.14721359226257
(1 row)
a=# select test();
ERROR: Relation 1769051 does not exist
a=# select test();
ERROR: Relation 1769051 does not exist
(↑ここまで:結果↑)
pgsql-jp メーリングリストの案内