アプリケーション開発でデータベースを利用する新人プログラマに向けて、SQLおよびT-SQLを短期間で理解できるよう、開発現場ですぐに必要となる内容を中心に解説する。(編集部)
主な内容
--Page 1--
▼IF文を利用した条件分岐の基本構文
--Page 2--
▼高度なIF文の利用
--Page 3--
▼条件式でのSELECT文の利用
▼まとめ
前回「Transact-SQLでストアドプロシージャを作成する」に続いて、今回もストアドプロシージャを取り上げます。前回の記事ではストアドプロシージャに関する基本概念を取り上げました。今回はそこから一歩進んで、ストアドプロシージャでの条件制御などを取り上げます。
前回の記事では、ストアドプロシージャの基本ということで、受け取ったパラメータに基づいてSELECT文を発行する単純な内容を取り上げました。今回は前回作成したストアドプロシージャに対して、条件式を加えてみましょう。
Transact-SQLでは、一般的なプログラム言語と同じように、「IF」文を利用した条件式でプログラム処理を動的に変化させることが可能です。IF文を利用する構文は次のような形です。
IF 条件式
条件式がTRUEの場合に実行する命令文
ELSE
条件式がFALSEの場合に実行する命令文
IF文を利用する場合、条件式と実行する命令文をセットにして記述します。上記の構文では、TRUEの場合に実行する命令文とFALSEの場合に実行する命令文となっています。条件式にはSELECT文のWHERE句で利用可能な構文や関数を指定できます。また、SELECT文の結果を条件式として利用できます。なお、ELSE以降の文は省略可能です。
それでは早速具体的なサンプルを確認しましょう。IF文を利用し、渡されたパラメータによって発行するSQLを変化させます。
CREATE PROCEDURE uspSamle2 |
このサンプルでは、ProductテーブルのColor列に対して条件値を設定しています。ProductテーブルにはColor列にNULL値を持つ行が存在するため、パラメータとしてNULLが渡ってきた場合も正しくSELECT文を発行できる必要があります。このためIF文を利用し、パラメータがNULLであった場合はWHERE句にて「IS NULL」を指定、NULL以外の場合はパラメータを利用した値の絞り込みを行っています。
実際にストアドプロシージャを実行して動作を確認しておきましょう。ストアドプロシージャに対し文字列の引数を渡す場合、シングルコーテーションで文字列を囲む必要がある点に注意してください。
EXEC uspSamle2 'Black' |
EXEC uspSamle2 NULL |
パラメータとしてNULLを渡した場合も正常に検索が行えていることが分かります。
Copyright © ITmedia, Inc. All Rights Reserved.