文章日志
日志类别:数据库
2013-12-05 13:18

已下是我写的例子:


ALTER PROCEDURE [dbo].[GetPageList]
@TableName varchar(8000),    --表名,可使用连接表如 Table1 t1 left join Table2 t2 on t2.Id = t1.typeId
@FiledName varchar(8000),    --需要的字段名,全部字段可用 *
@PageSize varchar(10),        --每页记录数
@PageIndex varchar(10),        --当前页码
@Where varchar(8000),        --查询条件,需要带where 如: where 1=1
@Order varchar(500),        --排序,如 ID desc,Name asc,必须指定一个排序
@rowCount int output        --返回总共行数

AS

declare @sql nvarchar(max)

set @sql = N'
with PageList as
(select
    ROW_NUMBER() OVER (order by ' + @Order + ') as PageListID,
    ' + @FiledName + '
    from ' + @TableName + '
    ' + @Where + ')
SELECT top ' + @PageSize + ' * FROM PageList WHERE PageListID >= (' + @PageIndex + '-1) * ' + @PageSize + ' +1 '

execute(@sql)

set @sql = 'select COUNT(0) as [rowCount] from ' + @TableName + ' ' + @Where
print @sql
execute sp_executesql @sql,N'@PCount int output',@rowCount output



0    0
昵称: