2020-01-07 更新

条件分岐(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

参考リンク

SQL Server】関連記事