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