[pgsql-jp: 40076] Re: rubyから利用するとエラーが出るときがあります。
Itagaki Takahiro
itagaki.takahiro @ oss.ntt.co.jp
2009年 11月 26日 (木) 15:45:40 JST
Nobuyuki Inaba <nobuyuki.inaba @ gmail.com> wrote:
> このサンプル場合、値の変えたいのは、1ヶ所ですが、2ヶ所以上になったとき、
> sql = "INSERT INTO t01(key) values(?); "
> sql = "INSERT INTO t01(key,key2,key3) values(?ここはどうする); "
> どうするといいか知りたいのです。
Ruby には詳しくないのですが、
http://www.jiubao.org/ruby-dbi/ruby-dbi.html
を見る限り、? を複数にして、
execute() の引数の個数を一致させれば良いように見えます。
sql = "INSERT INTO t01(key,key2,key3) values(?, ?, ?)
sth.execute(#{num}, value_for_key2, value_for_key3)
また、prepare で返されたオブジェクトは finish しないと
リソースリークが発生するようなのでご注意を。
元のループでも、毎回 finish すればエラーにはならないかもしれません。
(もちろん ? を使うほうが処理は速くなると思います)
------------------------------------------------------------
NTT オープンソース ソフトウェア センタ
板垣貴裕 <itagaki.takahiro @ oss.ntt.co.jp>
pgsql-jp メーリングリストの案内