티스토리 뷰

💼 정보 ver1.0

ms-sql 페이징 쿼리

James Wetzel 2013. 1. 3. 19:34
728x90
반응형

ms-sql 2000 버전용[페이징 쿼리문]

CREATE PROCEDURE dbo.StoredProcedurePaging2000

(

@currentPageNo int,

@pageSize int,

@totalRows int output

)

AS

begin

set nocount on

declare @sql nvarchar(500)


set @sql = 'SELECT TOP '+ STR(@pageSize)

+ '* '

+ 'FROM Member '

+ 'WHERE no NOT IN ( '

+ 'SELECT TOP ' + STR(((@currentPageNo - 1) * @pageSize))

+ ' no '

+ 'FROM Member '

+ 'ORDER BY no DESC)'

+ 'ORDER BY no DESC'


exec sp_executesql @sql


SELECT @totalRows = (SELECT COUNT(*) FROM Member)

endexec sp_executesql @sql

end



ms-sql 2005 버전용[페이징 쿼리문]
CREATE PROCEDURE dbo.StoredProcedurePaging2005
(
@currentPageNo int,
@pageSize int,
@totalRows int OUTPUT
)
AS
BEGIN
SET NOCOUNT ON

SELECT *
FROM ( SELECT ROW_NUMBER() OVER ( ORDER BY no DESC ) AS _ROWNUM, * 
FROM Member
) AS tb
WHERE tb._ROWNUM BETWEEN ((@currentPageNo - 1) * @pageSize + 1)
AND (@currentPageNo * @pageSize)

SELECT @totalRows = (SELECT COUNT(*) FROM Member)
END

728x90
반응형