動的SQLの使用方法

622 ワード

ほとんどのサービスは動的SQLで処理できますが、必要に応じてクエリー自体を変更する必要がある場合があります.ある条件によってINSERT項目が変化したり、特定値によってSELECT項目が変化したりする場合があります.この場合、サービスの柔軟性を保証するのは動的SQLです.
使用例
DECLARE @SQL NVARCHAR(MAX)

SET @SQL = ''
SET @SQL += N' SELECT * FROM PEOPLE ' 
IF @GENDER = 'male'
	@SQL += 'WHERE AGE > 20'
EXEC SP_EXECUTESQL @SQL
上記の例は、MSSQLで動的SQLを使用する例で、文字列変数にクエリーを条件に入れて直接実行します.上記の例では、性別が男性の場合、SELECTで動的SQL変更を使用してクエリーを実行できるのは20歳の人だけです.もちろん、CASE WHENまたは複数回のSELECTを静的SQLとして使用すると、同じ結果が得られますが、クエリ文が重複し、不要な冗長性が生じる可能性があります.したがって、サブクエリまたは複数のSELECTでサービスを開発する必要がある場合は、動的SQLを使用してみてください.