条件分岐(IF ~ ELSE)の実装方法
SQL ServerのTransact-SQLで条件分岐(IF ~ ELSE)を実装する方法です。
今、関わっているプロジェクトでTransact-SQLを使ってデータの追加や修正といったことをしないといけなくなったので、メモとして残しておきます。
目次
- コード
- SQLの実行結果
- 参考リンク
コード
条件分岐(IF ~ ELSE)の構文は以下のようになります。条件分岐内のコードが複数行にならない場合、IF-ELSE直後のBEGIN-ENDは省略可能です。
DECLARE @a int = 1;
DECLARE @b int = 2;
BEGIN TRY
-- check @a
IF @a = 1
BEGIN
SET @a = 11
SELECT '@a OK' AS result;
END
ELSE
BEGIN
SET @a = 'test';
END
-- check @b
IF @b = 1
BEGIN
SET @b = 22
SELECT '@b OK' AS result;
END
ELSE IF @b = 2
BEGIN
SET @b = 'test';
END
END TRY
BEGIN CATCH
SELECT @a AS a, @b AS b, 'error' AS result
END CATCH
上記のSQLは実際にテーブルに対してデータの更新は行っていません。通常は「BEGIN TRANSACTION ~ COMMIT」間にINSERTやUPDATE、DELETEなどの処理を実装します。
SQLの実行結果
上記のSQLを実行した結果は以下の通りです。
result |
---|
@a OK |
a | b | result |
---|---|---|
11 | 2 | error |