工匠精神,务实服务!

SQL语句分页存储过程的写法(超经典)

2013-03-31


IF OBJECT_ID('sp_getPagedMessageInfo') IS NOT NULL 

    DROP PROCEDURE sp_getPagedMessageInfo

GO

(如果数据库中存在这样的存储过程则删除)
 
CREATE PROCEDURE sp_getPagedMessageInfo
 
(建存储过程)
 
    @pageIndex INT ,---当前页数,从0开始
 
    @pageSize INT---每页显示条目数
 
(声明变量)
 
AS 
    WITH    RowNumber---CTE                              公共表达式
             AS ( SELECT   ROW_NUMBER() OVER ( ORDER BY dbo.[Messages].MID ) AS rowNumber , FROM   dbo.[Messages]        )
 
(这里有一点类似视图 增加一张虚拟表,如果大家想加ORDER BY 请在公共表达式这里加上按时间还是什么排列排列)
        SELECT  dbo.[Messages].MID ,
                dbo.[Messages].MContent ,
                dbo.[Messages].MIsReaded ,                dbo.[Messages].MSendBy ,
                dbo.[Messages].MSendDate ,
                RowNumber.rowNumber
        FROM    dbo.[Messages]
                INNER JOIN RowNumber ON dbo.[Messages].MID = RowNumber.MID
        WHERE   RowNumber.rowNumber
        BETWEEN @PageIndex * @PageSize-@PageSize+1   AND     @PageIndex * @PageSize
 
具体查询 可以一张表多张表同时查询
 
GO