「Open棟梁 wiki」は、「Open棟梁Project」,「OSSコンソーシアム .NET開発基盤部会」によって運営されています。
ルートのタグ
<ROOT>
・・・クエリ定義・・・
</ROOT>
クエリ定義は全て、このタグの中に収める。
ROOTタグ以外の全てのタグをネストできる。
パラメタとして設定した文字列に置換される。
<VAL name="xxx"/>
タグのネストは不可能。
最もよく使うタグで、基本的にWHERE句の条件を動的化する目的で使用するが、それ以外の場所・目的でも利用可能。
<IF>
・・・[演算子] 条件式・・・
</IF><IF name="xxx">
・・・[演算子] 条件式・・・
</IF><IF>AND XXX=@P1<ELSE>AND XXX IS NULL</ELSE></IF>
<IF name="xxx">AND XXX IS NOT NULL</IF>
通常WHERE句内の条件式を囲うことで、条件式の有効・無効を制御する。
IFタグに対応した、XXX IS NULL,XXX IS NOT NULLなどの条件式を記述する。
<ELSE>
・・・[演算子] 条件式・・・
</ELSE>
<IF>AND XXX=@P1<ELSE>AND XXX IS NULL</ELSE></IF>
<IF name="xxx">AND XXX IS NOT NULL<ELSE>AND XXX IS NULL</ELSE></IF>
VALタグのみネスト可能。
タグ内パラメタを使用して、SELECT-CASE-DEFAULTする。
<SELECT name="xxx">
<CASE value="A">・・・</CASE>
<CASE value="B">・・・</CASE>
<DEFAULT>・・・</DEFAULT>
</SELECT>
※ DEFAULTタグは省略可能
SELECTタグにタグ内パラメタを指定する。
VALタグのみネスト可能。
IN句の条件式を囲うことで、パラメタリストの指定と、IN句の有効・無効を制御する。
<LIST>
・・・[演算子] IN句の条件式・・・
</LIST>
VALタグのみネスト可能。
JOIN句をJOINタグで囲うことで、JOIN句の有効・無効を制御する。
<JOIN name="xxx">
・・・JOIN句・・・
</JOIN>
タグ内パラメタを指定する。
ROOT、PARAM、DIVタグ以外の全てのタグをネストできる。
WHERE句内で使用するサブクエリの条件式をSUBタグで囲うことで、サブクエリの条件式の有効・無効を制御する。
<SUB name="xxx">
・・・[演算子] サブクエリの条件式・・・
</SUB>
タグ内パラメタを指定する。
ROOT、PARAM、DIVタグ以外の全てのタグをネストできる。
WHERE句をWHEREタグで囲うことで、
不要なWHERE句や演算子(AND、OR)が削除されるようになる。
<WHERE>
・・・WHERE句・・・
</WHERE>
(・・・このため、IFタグは、・・・[演算子] 条件式・・・としている。)
ROOT、PARAM、DIVタグ以外の全てのタグをネストできる。
<INSCOL name="xxx">
InsertColumn ,
</INSCOL>
VALタグのみネスト可能。
<DELCMA>
・・・カンマ区切りのリスト・・・
</ DELCMA >
カンマ区切りのリストをプログラムで生成した場合、
生成した文字列の前・後に余分に付与されているカンマを削除する
【カンマの削除】
, aaa, bbb, ccc, ddd, eee, fff, ggg, → aaa, bbb, ccc, ddd, eee, fff, ggg
ROOT、PARAM、DIVタグ以外の全てのタグをネストできる。
動的パラメタライズド・クエリ分析ツールを使用し、
PARAMタグ間に指定したパラメタ値で動的パラメタライズド・クエリをテスト実行する。
<PARAM>
・・・パラメタ情報・・・
</PARAM>
パラメタの記述ルールを以下に示す。
P1, xxx<DIV/>
P1, String, xxx<DIV/> P2, Int32, 123<DIV/>
P1, String[], xxx, yyy, zzz<DIV/> P2, Int32[], 123, 456, 789<DIV/>
P1, String, xxx, yyy, zzz<DIV/>
上記の「型を表す文字列」・「値を表す文字列」については、下記を参照のこと。
DIVタグのみネストできる。
<DIV/>
PARAMタグ内で、パラメタを区切るために使用する。
ネストは不可能。
| # | パラメタの.NET型 | 型を表す文字列 | 値を表す文字列(の制限) | |
| 通常時 | 配列時 | |||
| 1 | System.Boolean | Boolean | Boolean[] | 「true」 or 「false」の文字列のみ指定可能 |
| 2 | System.Byte | Byte | Byte[] | Byteに収まる文字 |
| 3 | System.UInt16 | UInt16 | UInt16[] | UInt16に収まる数値を表す文字列 |
| 4 | System.UInt32 | UInt32 | UInt32[] | UInt32に収まる数値を表す文字列 |
| 5 | System.UInt64 | UInt64 | UInt64[] | UInt64に収まる数値を表す文字列 |
| 6 | System.SByte | SByte | SByte[] | SByteに収まる文字 |
| 7 | System.Int16 | Int16 | Int16[] | Int16に収まる数値を表す文字列 |
| 8 | System.Int32 | Int32 | Int32[] | Int32に収まる数値を表す文字列 |
| 9 | System.Int64 | Int64 | Int64[] | Int64に収まる数値を表す文字列 |
| 10 | System.Decimal | Decimal | Decimal[] | Decimalに収まる数値を表す文字列 |
| 11 | System.Single | Single | Single[] | Singleに収まる数値を表す文字列 |
| 12 | System.Double | Double | Double[] | Doubleに収まる数値を表す文字列 |
| 13 | System.Char | Char | Char[] | Charに収まる文字 |
| 14 | System.String | String | String[] | 任意の文字列 |
| 15 | System.DateTime? | DateTime? | DateTime?[] | DateTime?(日付型)に変換可能な文字列 |
| 16 | System.DBNull | DBNull | サポートしない | - |
| 17 | null値の場合 | - | サポートしない | 「null」という文字列のみ指定可能 |
※ xxx, yyyの値はあっても無視される。
動的パラメタライズド・クエリのパラメタに「null」を使用した場合は、
タグを無効にするような動作になる(IFタグ-ELSEタグタグでは、ELSEタグが有効になる)。
※ xxx, yyyの値はあっても無視される。