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