[pgsql-jp: 32668] Re: function で一時的なview の作成方法を教えてください
Hashimoto, Masaru
hashimoto-m @ comtecc.net
2004年 4月 6日 (火) 09:51:37 JST
橋本です。
> ------------------------------------------------------
> DROP FUNCTION fun_EigoyJiseki(integer);
> CREATE FUNCTION fun_EigoyJiseki(integer) RETURNS view_jiseki_year AS '
> CREATE VIEW view_jiseki_year (
> parm1,
> parm2,
> parm3,
> parm4
> ) AS
> SELECT
> SUBSTRING(KARIKC.DPIND,1,2),
> KARIKC.KTANTO,
> SUM(KARIKC.KKARIG),
> SUM(KARIKC.HONGAK)
> FROM KARIKC
> GROUP BY
> SUBSTRING(KARIKC.DPIND,1,2),
> KARIKC.KTANTO;
> SELECT * FROM view_jiseki_year
> WHERE parm1=$1;'
> LANGUAGE SQL;
> ---------------------------------------------
> function作成時に
> psql:TEST1.FUN:20:ERROR:Type"view_jiseki_year"dose not exist
> のエラーで作成できません。
>
CREATE FUNCTION での戻りには、既に存在する型とかテーブルを
指定する必要があります。
今回のは、まだ作成されていないVIEWを指定しているために
エラーが出ているようです。
# 確か、SQL関数で複数のSQL文やCREATE文は使用出来なかった
# 気がします。
# そういうときはPL/pgSQLで記述したほうがよさそうです。
また、これは先にVIEWを作成しておいたら駄目なのですか?
そうしたら、2つめのSQL文の
> SELECT * FROM view_jiseki_year
> WHERE parm1=$1;'
だけで実現できそうな気がしますが。
pgsql-jp メーリングリストの案内