[MS-SQL] [ Query ] 동적 쿼리 만들어 쓰기
동적쿼리를 만들어 쓰면 편한게 일단 조건을 상황에 따라 변경이 가능하고, 필용에 따라 필요한 데이터를 뽑기도 편한것 같다. 하지만...좀 쓰기 귀찮은게 있긴하다. 코드로 간단하게 알아 보자.
예제)
Query |
DECLARE @CurrentPage INT, @PageSize INT, @Missionidx INT, @QuestionKind INT
SET @CurrentPage = 2; SET @PageSize = 10; SET @CurrentPage = @PageSize * (@CurrentPage-1);
DECLARE @Query NVARCHAR(1000), @Param NVARCHAR(100)
SET @Query = ' SELECT TOP(@PageSize) MemoIdx,UserIdx, MemoContent FROM Memo WHERE MemoIdx < ( SELECT ISNULL(MIN(A.MemoIdx),999999) FROM ( SELECT TOP(@CurrentPage) MemoIdx FROM Memo ORDER BY MemoIdx DESC ) A ) ORDER BY MemoIdx DESC';
SET @Param = '@PageSize INT, @CurrentPage INT';
EXECUTE sp_executesql @Query, @Param, @PageSize, @CurrentPage |
위 쿼리는 간단하게 Memo테이블에서 Memo리스트를 가지고 오는 쿼리이다. 페이징 기능이 있는... 그래서 CurrentPage변수와 PageSize변수가 있는 것이다. 동적쿼리는 이렇게 Query라는 임의의 변수를 만들어 주고, 문자열로 지정해서 EXECUTE sp_executesql 함수를 이용해서 호출해 주면 되는 것이다.