SQLToolsプラグイン(その5・プレースホルダの利用)

状況に応じてSQLのパラメータを変化させたい場合には、プレースホルダを使うことができます。

1.SQLにプレースホルダを入れる

例えば、「IDが1番のブログから、ある期間の記事を読み込む」ということを考えてみます。
この「ある期間」の部分を、状況によって変えたいとします。

このように、SQLを状況によって変えたい場合、その変えたい箇所を「プレースホルダ」にします。
プレースホルダは「?」の記号で表します。
MTSQLObjectsタグで記事を処理する場合だと、上で取り上げた例なら、以下のようなSQLを作ります。

SELECT entry_id
FROM mt_entry
WHERE entry_blog_id = 1
AND entry_class = 'entry'
AND entry_status = 2
AND entry_authored_on BETWEEN ? AND ?

2.placeholdersモディファイアで値を指定

一方、MTSQLObjectsタグ等のSQLを実行するテンプレートタグでは、「placeholders」というモディファイアを使って、プレースホルダを指定します。
個々のプレースホルダに渡す値を、カンマで区切って並べます。

例えば、前述のSQLを使って、「2014年の記事」(2014年1月1日以降、2015年1月1日まで)を読み込みたいとします。
この場合、MTSQLObjectsタグを以下のように書きます。

<mt:SQLObjects name="○○○" type="entry" placeholders="2014-01-01","2015-01-01">
  ...
</mt:SQLObjects>

3.プレースホルダを変数で指定

一般のテンプレートタグのモディファイアと同様に、プレースホルダを変数で指定することもできます。

例えば、上記の例で期間の開始日/終了日が、それぞれ変数from/toに入っているとします。
この場合、MTSQLObjectsタグを以下のように書きます。

<mt:SQLObjects name="○○○" type="entry" placeholders="$from","$to">
  ...
</mt:SQLObjects>