[pgsql-jp: 31452] Function関数の対象テーブル名を変数化

kenbooit @ excite.co.jp kenbooit @ excite.co.jp
2003年 11月 13日 (木) 22:17:04 JST


島田と申します。
お世話になります。
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 メーリングリストの案内