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

Noriyuki TORII torii @ nn.iij4u.or.jp
2004年 11月 19日 (金) 12:33:26 JST


鳥居です.

 藤井さん, 宇野さんのお二方ともPL/pgSQLのような手続き型の処理による実装を
ご提案くださったことからするとやはり単純にSQL文だけでは望んでいたような
ことを実現するのは難しいようですね.

藤井さん> 一番簡単なのは、以下のようなFUNCTIONを実行することだと思います。
藤井さん>  レコードごとに
藤井さん>  1. 種別で余命処理と寿命判定処理を選択し
  (中略)
藤井さん> FUNCTIONを追加変更する程度の改修であれば、許容範囲だったりしますでしょうか?

 できれば, 新種レコードの追加に際してはそれまであったコードに手を加える
ことなく独立にプラグ化可能になっている方がよいと考えていました.
 ですが, コードを見れば何が起きるか分かりやすいと言う点ではご提案いただ
いた方法も捨てがたいですね.

宇野さん> 変数func_nameに関数名(たとえば''inc'')を入れた状態で
宇野さん> EXECUTE ''UPDATE datatbl SET value='' || func_name || ''(value);'';
宇野さん> 
宇野さん> のような方式で行けそうに思いますが、どうでしょう。

 なるほど, これまでpostgreSQL上で手続き型の関数を使ったことがないので
こういった方法には考えが至りませんでした. PL/pgSQLでの関数の作り方を
調べるのと併せてこちらも検討してみたいと思います.

 ご返答くださった内容を参考にさせていただこうと思います.
 どうもありがとうございました. > 藤井さん, 宇野さん
---
torii @ nn.iij4u.or.jp



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