[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 メーリングリストの案内