CTE( common table expression )
CTE( 공통 테이블 식): 임시로 이름이 지정된 결과 집합
서브쿼리 혹은 조인으로 사용될 부분을 미리 정의해 놓은 것이다.
* 예제) CTE를 이용한 페이징 쿼리(Web)
CREATE TABLE Article (
idx INT IDENTITY (1,1)
,title VARCHAR(1000)
, Contents VARCHAR(1000)
)
CREATE UNIQUE CLUSTERED INDEX ix on dbo.Article (idx)
INSERT into dbo.Article (title, contents)
VALUES ('title','contents')
GO 100
CREATE PROC dbo.usp_article
(
@PAGENUM INT
, @PAGESIZE INT
) AS
SET NOCOUNT ON;
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;
WITH PAGE_LIST AS
(
SELECT ROW_NUMBER() OVER (ORDER BY IDX DESC) AS ROWNUM,*
FROM dbo.Article
)
SELECT * FROM PAGE_LIST
WHERE ROWNUM BETWEEN ((@PAGENUM - 1) * @PAGESIZE) + 1 AND @PAGENUM * @PAGESIZE;
GO
--BETWEEN [(페이지번호-1)*페이지크기+1] and [페이지번호*페이지크기]
EXEC dbo.usp_article 1,10 -- 1Page 10개데이터가져오기
EXEC dbo.usp_article 2,10 -- 2Page 10개데이터가져오기
EXEC dbo.usp_article 3,10 -- 3Page 10개데이터가져오기
ROW_NUMBER ( ) 참고 : http://msdn.microsoft.com/ko-kr/library/ms186734.aspx
|