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