MS-SQL 分页函数+ASP
2009-06-04 12:06:45 来源:WEB开发网CREATE PROCEDURE [dbo].[USP_GetList]
(
@pageIndex int = 1 -- 当前页码0 表示返回所有符合内容
,@pageSize int = 10 -- 页尺寸
,@SID nvarchar(30) = '' -- 主键字段
,@strGetField nvarchar(1000) = '*' -- 需要返回的列
,@strTableName nvarchar(30) = '' --表名
,@strWhere nvarchar(2000) = '' -- 查询条件(注意: 条件中要带where)
,@strOrderBy nvarchar(300) = '' -- 排序
--,@MemberID int=0 --会员ID
)
AS
SET NOCOUNT ON
DECLARE @strSQL nvarchar(4000)
DECLARE @startPos int
DECLARE @endPos int
DECLARE @num int
SET @startPos=@pageSize*(@pageIndex-1)+1
SET @endPos=@startPos+@pageSize-1
--页大小*(页数-1)
SET @num = @pageSize * (@PageIndex - 1)
IF @PageIndex!=0
BEGIN
IF @strWhere != ''
SET @strSQL = 'SELECT TOP '+ cast(@pageSize as nvarchar(10)) +' '+ @strGetField +' FROM '+ @strTableName +' WHERE ('+ cast(@SID as nvarchar(30)) +' NOT IN (SELECT TOP '+ cast(@num as nvarchar(20)) +' '+ cast(@SID as nvarchar(30)) +' FROM '+ @strTableName +' where '+@strWhere+' ORDER BY '+ cast(@strOrderBy as nvarchar(255)) +' )) and '+@strwhere+' ORDER BY '+cast(@strOrderBy as varchar(255)) + ''
else
SET @strSQL = 'SELECT TOP '+ cast(@pageSize as nvarchar(10)) +' '+ @strGetField +' FROM '+ @strTableName +' WHERE ('+ cast(@SID as nvarchar(30)) +' NOT IN (SELECT TOP '+ cast(@num as nvarchar(20)) +' '+ cast(@SID as nvarchar(30)) +' FROM '+ @strTableName +' ORDER BY '+ cast(@strOrderBy as nvarchar(255)) +' )) ORDER BY '+ cast(@strOrderBy as varchar(255)) + ''
- ››SQL Server 2008 R2 下如何清理数据库日志文件
- ››sqlite 存取中文的解决方法
- ››SQL2005、2008、2000 清空删除日志
- ››SQL Server 2005和SQL Server 2000数据的相互导入...
- ››sql server 2008 在安装了活动目录以后无法启动服...
- ››sqlserver 每30分自动生成一次
- ››sqlite 数据库 对 BOOL型 数据的插入处理正确用法...
- ››sql server自动生成批量执行SQL脚本的批处理
- ››sql server 2008亿万数据性能优化
- ››SQL Server 2008清空数据库日志方法
- ››sqlserver安装和简单的使用
- ››SQL Sever 2008 R2 数据库管理
更多精彩
赞助商链接