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

Noriyuki TORII torii @ nn.iij4u.or.jp
2004年 11月 18日 (木) 12:56:25 JST


こんにちは、鳥居と申します。

 postgreSQLでの関数の利用について少し分からない点があり, みなさまの
知恵をお借りたいと思っています.

 例えば, 次のようなテーブルと関数を用意したとします.

create table functbl (
 name text,
 function regprocedure 
);

create function inc(integer) returns integer as '
  select $1 + 1;
' language sql;

insert into functbl (name, function)
 values ('increment', 'inc(integer)');

select * from functbl;  
   name    |   function   
-----------+--------------
 increment | inc(integer)
(1 row)


 ここで, このfunctblからSELECTした結果を関数として利用することが
できないかというのが頭を悩ませている点です.
 つまり

update datatbl set value=inc(value);

を実行するみたいに

update datatbl
set value=(select function from functbl where name='increment')(value);

のようなことを(上の文はエラーになりますが)できないだろうかということです.

 私の方でも調べてはみたのですが, これまでのところ期待したような情報を
見つけることができずにいます.
 何かよい文書へのポインタや, そもそもこのようなことが可能かどうかなど
ご存知の方がいらっしゃればお教えいただけないでしょうか.
 では, よろしくお願いします.
---
torii @ nn.iij4u.or.jp



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