[Seasar-user:18454] Re: [S2JDBC]バインド変数と埋め込み変数コメントの使い分け

Koichi Kobayashi [E-MAIL ADDRESS DELETED]
2009年 9月 7日 (月) 16:00:57 JST


小林 (koichik) です.

Date:    Mon, 7 Sep 2009 02:45:38 +0900
From:    坂本千夏 <[E-MAIL ADDRESS DELETED]>
To:      [E-MAIL ADDRESS DELETED]
Subject: [Seasar-user:18452] [S2JDBC]バインド変数と埋め込み変数コメントの使い分け

> ドキュメントでは以下のように orderBy に埋め込み変数コメントが使われていますが、
> 
> -----------------
> order by  句をパラメータで変えたい場合は、 /*$orderBy*/と指定します。
> select * from employee order by /*$orderBy*/id
> -----------------
> 
> orderBy の対象列が複数の場合にカンマが含まれるので、バインド変数は使えなくなるからでしょうか?ただ、実際に試してみたところ、バインド変数を使用してもエラーにならないようです(正しくソートされていなかったかもしれませんが・・・)

カンマは関係ありません.
バインド変数で指定できるのは文字列や数値などの
「値」であって,テーブル名やカラム名を指定
することはできません.
逆に言えば,それらを可変にしたい場合は
埋め込み変数コメントを使う必要があります.

> また、条件によって order by 句の有無が変わる場合は、以下のように記述すべきでしょうか?
> 
> select * from employee /*$orderBy*/

はい.

> ただ、これもバインド変数を使って、
> 
> select * from employee /*orderBy*/
> 
> と書いても動作しているようでした。

普通は SQL の文法エラーになると思いますが.


-- 
<component name="koichik">
    <property name="fullName">"Koichi Kobayashi"</property>
    <property name="email">"[E-MAIL ADDRESS DELETED]"</property>
    <property name="blog">"http://d.hatena.ne.jp/koichik"</property>
</component>



Seasar-user メーリングリストの案内