[pgsql-jp: 40054] Re: EXECUTE USINGについて

Yusuke Yamasaki tm9233yy @ gmail.com
2009年 11月 5日 (木) 09:59:49 JST


>原田さん、板垣さん

なるほど、CRUD操作のパラメータを安全に与える機能ということですね。

> EXECUTE printf('CREATE TABLE $1(i int)', quote_ident(tablename));
> みたいな機能はあっても良い気はしますね。

そうですね。今のところvimのシンタックスハイライトに頼っています。

いろいろと、ありがとうございました。


2009年11月5日9:12 Itagaki Takahiro <itagaki.takahiro @ oss.ntt.co.jp>:
>
> 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>
>
>
>



-- 
Yusuke Yamasaki <tm9233yy @ gmail.com>



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