﻿接続文字列
  Data Source=localhost\sqlexpress;Initial Catalog=Northwind;Integrated Security=True;

SELECT * FROM SHIPPERS

↓ 検索条件指定

SELECT * FROM SHIPPERS WHERE SHIPPERID = 1

↓ パラメタライズド・クエリ化（パラメタ指定可能

SELECT * FROM SHIPPERS WHERE SHIPPERID = @p1
/*PARAM* p1, Int32, 1 *PARAM*/

↓ 動的化

<?xml version="1.0"?>
<ROOT>
  <WHERE>
    <IF></IF>
  </WHERE>
  <PARAM>
  </PARAM>
</ROOT>

<?xml version="1.0"?>
<ROOT>
  SELECT * FROM SHIPPERS
  <WHERE>
    WHERE
      <IF>SHIPPERID = @p1</IF>
  </WHERE>
  <PARAM>
    p1, Int32, 1
  </PARAM>
</ROOT>

↓p2条件と条件指定を追加

<IF>AND COMPANYNAME = @p2</IF>

<PARAM>
  p1, Int32, 1<DIV/>
  p2, String, Speedy Express
</PARAM>

↓p1条件指定を落とす。

↓p1条件指定を戻してp2条件指定を落とす。

↓p1をLIST化

<?xml version="1.0"?>
<ROOT>
  SELECT * FROM SHIPPERS
  <WHERE>
    WHERE
      <LIST>SHIPPERID IN (@p1)</LIST>
      <IF>AND COMPANYNAME = @p2</IF>
  </WHERE>
  <PARAM>
    p1, Int32, 1, 2
  </PARAM>
</ROOT>

↓ COMMENT、CDATAに対応（以下の様な処理も可能）。
   ただし、タグ内パラメタはCDATAに入れないこと。

<?xml version="1.0"?>
<ROOT>
  <!--コメントA-->
  SELECT * FROM SHIPPERS
  <WHERE>
    WHERE
      <!--コメントB-->
      <IF>SHIPPERID = @p1</IF>
      <!--LIST>AND SHIPPERID IN (@p2)</LIST-->
      <IF>AND SHIPPERID BETWEEN @p3 AND @p4</IF>
      <IF>AND COMPANYNAME <![CDATA[ <> ]]><![CDATA[ @p5 ]]><![CDATA[ /* &&& */ ]]></IF>
      <VAL name="pval"/>
  </WHERE>
  <PARAM>
    p1, <!--コメント1-->Int32<!--コメント2-->, <!--コメント3-->1<DIV/>
    <!--p2, Int32, 1, 2<DIV/-->
    p3, Int32, 1<DIV/>
    p4, Int32, 2<DIV/>
    <![CDATA[ p5, String, &<> ]]><DIV/>
    pval, <![CDATA[ /* &<> */ ]]>
  </PARAM>
</ROOT>