[pgsql-jp: 40053] Re: EXECUTE USINGについて
    Itagaki Takahiro
    itagaki.takahiro @ oss.ntt.co.jp
       
    2009年 11月  5日 (木) 09:12:00 JST
    
    
  
Hitoshi Harada <umi.tanuki @ gmail.com> wrote:
> というわけで、EXECUTE ... USINGで与えられるパラメータは、プリペアドステートメントで与えられるパラメータ(WHERE id
> = $1等)と同一と考えてよいようです。
はい。なので、
    > EXECUTE 'CREATE TABLE $1(i int)' USING tablename;
の代わりに
    EXECUTE 'CREATE TABLE ' || quote_ident(tablename) || '(i int)';
を使うことになります。
# SQLインジェクションが怖いので quote_ident() をお忘れなく!
ところで、文字列の連結がたくさんあるとコードが読みづらいので、
    EXECUTE printf('CREATE TABLE $1(i int)', quote_ident(tablename));
みたいな機能はあっても良い気はしますね。
------------------------------------------------------------
NTT オープンソース ソフトウェア センタ
板垣貴裕 <itagaki.takahiro @ oss.ntt.co.jp>
    
    
pgsql-jp メーリングリストの案内