[pgsql-jp: 31454] Re: Function関数の対象テーブル名を変数化
yusaku matsuda
yumatuda @ msoft.co.jp
2003年 11月 14日 (金) 11:22:54 JST
はじめまして、エムソフトの松田と申します。
うろ覚えで恐縮ですが、テーブル名を
quote_ident($1)
とすれば良かったと思います。
On Thu, 13 Nov 2003 22:17:04 +0900 (JST)
kenbooit @ excite.co.jp さんは書きました:
> 島田と申します。
> お世話になります。
> FUNCTION関数に関する質問です。
>
> CREATE FUNCTION counter(date)
> RETURNS bigint
> AS '
> SELECT count(*) FROM table1
> WHERE
> AND date = $1
>
> 'LANGUAGE 'sql';
>
> 例えば、上記のような関数があったとします。
> 対象とするテーブル(ここでいうtalbe1)は同じ構造で沢山ある為に
> (データ量が多い為にやむを得ず、分けています。)、
> できれば、テーブル名も変数で渡して、
> 汎用性のあるものにしたいと考えています。
>
> そこで、単純に下のようにすると、
>
> CREATE FUNCTION counter(date,text)
> RETURNS bigint
> AS '
> SELECT count(*) FROM $2
> WHERE
> AND date = $1
>
> 'LANGUAGE 'sql';
>
> parser: parse error at or near "$2" at ・・・・・・・
>
> となってしまいます。
>
> テーブルがないから作りようがない、ってことだとは思うのですが、
> 何か良い手はないでしょうか。
>
> お知恵を拝借したく存じます。
> よろしくお願い致します。
pgsql-jp メーリングリストの案内