Computer/MSSQL

페이징 처리

알찬돌삐 2011. 11. 29. 10:07


게시판등과 같은 곳에서 페이징 처리할때 여러가지 방법이 있겠지만 SQL Server의 top 을 쓰면 편리하다고 들었다.
그래서 oracle도 같은 방법을 찾아보아서 한번 정리해 보았음





 

 

# 예제테이블

CREATE TABLE TB_Board (
 [nID] [int] IDENTITY (1, 1) NOT NULL ,
 [sTitle] [varchar] (100) COLLATE Korean_Wansung_CI_AS NOT NULL ,
 [sContent] [text] COLLATE Korean_Wansung_CI_AS NULL ,
 [sContentType] [varchar] (4) COLLATE Korean_Wansung_CI_AS NULL ,
 [nViewCount] [int] NOT NULL ,
 [nModifyCount] [int] NOT NULL ,
 [dCreateDate] [datetime] NOT NULL ,
 [dModifyDate] [datetime] NOT NULL ,
 [cUseFlag] [char] (1) COLLATE Korean_Wansung_CI_AS NOT NULL 
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]

 

위 테이블은 SQL Server에서 생성하는 게시판테이블 Script임.

 

[사용할 변수]

pageRowCnt : 페이지에 보여줄 행수

page : 보여질 페이지

 

# SQL Server

 

sql = "SELECT TOP " & pageRowCnt & " * FROM TB_Board " & _

        "WHERE nID not in " & _

        "(SELECT TOP " & ((page-1)*pageRowCnt) & ") nID FROM TB_Board " & _

        "   ORDER BY nID DESC)" & _

        "ORDER BY nID desc"

 

 

# Oracle

 

sql = "SELECT * FROM " & _

        "(SELECT nID FROM TB_Board " & _

        "  WHERE nID NOT IN " & _

        "  (SELECT nID FROM " & _

        "    (SELECT nID FROM TB_Board ORDER BY nID DESC) " & _

        "  WHERE ROWNUM <= " & ((page-1)*pageRowCnt) & ") " & _

        "ORDER BY nID DESC) " & _

        "WHERE ROWNUM <= " & pageRowCnt



출처 : http://blog.naver.com/siro012/60020566953.

'Computer > MSSQL' 카테고리의 다른 글

저장프로시저(SP)에서 RecordCount -1 반환  (0) 2017.10.31
DATETIME 변환  (0) 2017.10.31
테이블 용량 및 row 수 확인  (0) 2017.10.30
MSSQL 스크립트로 테이블 열 설명 붙이기  (0) 2011.12.20