Transact-SQL はSQL Server 独自の拡張機能です。
SQL文の中で変数やIF文、ループ処理などのプログラミングのような記述をすることができます。
そんなTransact-SQLの使い方を まとめます。
変数の使い方
変数の宣言(DECLARE)
変数を宣言する場合は、DECLARE を使用します。
変数名には頭に@を付けます。
初期値は省略可能です。
構文
DECLARE @変数名 データ型 [=初期値]
--int型、初期値10で宣言
DECLARE @num int = 10;
--varchar(10)型、初期値'declare'で宣言
DECLARE @string varchar(10) = 'declare';
変数に代入(SET)
変数に値を代入する場合は、SET を使用します。
構文
SET @変数名 = 値
--変数numに100を代入
SET @num = 100
--変数stringに'set'を代入
SET @string = 'set'
変数の値を出力(PRINT / SELECT)
変数の値を出力したい場合は、PRINT か SELECT を使用します。
構文
PRINT @変数名
SELECT @変数名
PRINT はメッセージにテキスト形式で出力されます。
SELECT は結果にグリッド形式で出力されます。
IF(条件分岐)の使い方
Transact-SQL では、IF を使うことにより条件分岐処理を記述することができます。
構文のBEGINとENDは処理が1ステートメントの場合は省略が可能です。
IF ELSE(条件分岐)
構文
IF(条件式)
[BEGIN]
条件が真の場合の処理
[END]
ELSE
[BEGIN]
条件が偽の場合の処理
[END]
DECLARE @num int = 10;
IF(@num >= 10)
BEGIN
PRINT '10以上です';
END
ELSE
BEGIN
PRINT '10未満です';
END
-- これでもいける
IF(@num >= 10)
PRINT '10以上です';
ELSE
PRINT '10未満です';
IF EXISTS
IF EXISTS を使うことにより、SELECT の結果が存在するかどうかによる分岐処理を記述することができます。
構文
IF EXISTS(SELECT文)
[BEGIN]
条件が真の場合の処理
[END]
ELSE
[BEGIN]
条件が偽の場合の処理
[END]
IF EXISTS(SELECT * FROM Person)
PRINT '存在します';
ELSE
PRINT '存在しません';
WHILE(ループ処理)の使い方
WHILE を使うことで、ループ処理を記述することができます。
構文のBEGINとENDは処理が1ステートメントの場合は省略が可能です。
構文
WHILE(条件式)
[BEGIN]
条件を満たしている場合の処理
[END]
DECLARE @num int = 1;
WHILE(@num <= 10)
BEGIN
-- CONVERT で文字列に変換
PRINT CONVERT(char(2), @num) + '回目のループ';
SET @num += 1;
END
--1 回目のループ
--2 回目のループ
--3 回目のループ
--4 回目のループ
--5 回目のループ
--6 回目のループ
--7 回目のループ
--8 回目のループ
--9 回目のループ
--10回目のループ