[pgsql-jp: 34292] Re: テーブルに登録された関数の実行について

UNO Shintaro uno @ venus.dti.ne.jp
2004年 11月 18日 (木) 21:26:35 JST


>update datatbl
>set value=(select function from functbl where name='increment')(value);
>
>のようなことを(上の文はエラーになりますが)できないだろうかということです.
>
> 私の方でも調べてはみたのですが, これまでのところ期待したような情報を
>見つけることができずにいます.
> 何かよい文書へのポインタや, そもそもこのようなことが可能かどうかなど
>ご存知の方がいらっしゃればお教えいただけないでしょうか.

PL/pgSQLの動的実行機能(EXECUTE文)を使って、
http://www.postgresql.jp/document/pg746doc/html/plpgsql-statements.html#PLPGSQL-STATEMENTS-EXECUTING-DYN

変数func_nameに関数名(たとえば''inc'')を入れた状態で
EXECUTE ''UPDATE datatbl SET value='' || func_name || ''(value);'';

のような方式で行けそうに思いますが、どうでしょう。

-- 
UNO Shintaro, 宇野 信太郎
mailto:uno @ venus.dti.ne.jp
http://www.venus.dti.ne.jp/~uno/




pgsql-jp メーリングリストの案内