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