Dynamic SQL (동적 SQL) 사용법

대부분의 서비스는 동적 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 사용의 예시로 문자열 변수에 쿼리를 조건에 따라 집어넣어 직접 실행하고 있다. 위의 예시에서는 성별이 남성일 경우 나이가 20세이상인 사람만 SELECT 하도록 동적 SQL을 활용해 실행 쿼리를 변화시킨 경우이다. 물론 정적 SQL로도 CASE WHEN이나 한번 이상의 SELECT를 활용한다면 같은 결과를 보여 줄수 있겠지만, 이는 중복된 쿼리문의 작성을 유발하며, 불필요하게 구문이 길어질수도 있다. 따라서 서브쿼리나 여러번의 SELECT를 통해 서비스를 개발해야하는 경우는 동적 SQL을 활용 해 보는 것이 도움이 될 수도 있다.

좋은 웹페이지 즐겨찾기