我的sql自定义分页
来源:互联网 发布:文件恢复软件 免费版 编辑:程序博客网 时间:2024/06/05 22:50
declare
@mainsql nvarchar(500), --主语句
@tempsql nvarchar(500), --临时变量
@ordersql nvarchar(500), --排序语句
@ordertype int, --排序类型(非0代表降序)
@primarykeyfield varchar(30), --主键字段
@pageindex int, --当前页索引
@pagesize int, --页尺寸
@wherecondition nvarchar(500), --查询条件
@tablename nvarchar(50) --表名
--
set @mainsql=N''
set @tempsql=N''
set @ordersql=N''
set @ordertype=1
set @primarykeyfield=N'id'
set @pageindex=1 --1273723
set @pagesize=100
set @wherecondition=N'cdate between ''2008-7-30 00:00:00'' and ''2008-7-30 23:38:13'''
set @tablename=N'mytable'
--
declare @topn int
set @topn=(@pageindex-1)*@pagesize
--
if(@ordertype!=0)
begin
set @tempsql=N'<(select min'
set @ordersql=N' order by [' + @primarykeyfield + N'] desc'
end
else
begin
set @tempsql=N'>(select max'
set @ordersql=N' order by [' + @primarykeyfield + N'] asc'
end
--
if(@pageindex=1)
begin
set @mainsql=N'select top ' + cast(@pagesize as nvarchar(500)) + N' * from ' + @tablename
if(@wherecondition !='')
begin
set @mainsql = @mainsql + N' where ' + @wherecondition
end
set @mainsql = @mainsql + @ordersql
end
else
begin
set @mainsql = @mainsql + N'select top ' + cast(@pagesize as nvarchar(500)) + N' * from ' + @tablename
set @mainsql = @mainsql + N' where [' + @primarykeyfield + N']' + @tempsql + N'([' + @primarykeyfield + N'])'
set @mainsql = @mainsql + N' from (select top ' + cast(@topn as nvarchar(500)) + N' [' +@primarykeyfield + N'] from ' + @tablename
if(@wherecondition !='')
begin
set @mainsql = @mainsql + N' where ' + @wherecondition
end
set @mainsql = @mainsql + @ordersql + N') as tblTmp)'
if(@wherecondition !='')
begin
set @mainsql = @mainsql + N' and ' + @wherecondition
end
set @mainsql = @mainsql + @ordersql
end
--print @mainsql
declare @parameters nvarchar(500)
set @parameters=N'@mainsql nvarchar(500),
@tempsql nvarchar(500),
@ordersql nvarchar(500),
@ordertype int,
@primarykeyfield varchar(30),
@pageindex int,
@pagesize int,
@wherecondition nvarchar(500),
@tablename nvarchar(50)'
exec sp_executesql @mainsql,@parameters,
@mainsql,
@tempsql,
@ordersql,
@ordertype,
@primarykeyfield,
@pageindex,
@pagesize,
@wherecondition,
@tablename
--
--计算总记录数
declare
@totalsql nvarchar(500), --计算总记录数
@wherecondition nvarchar(500), --查询条件
@tablename nvarchar(50), --表名
@recordcount int --总记录数 --output
--
set @wherecondition=N'cdate between ''2008-7-30 00:00:00'' and ''2008-7-30 23:38:13'''
set @tablename=N'mytable'
--
set @totalsql=N'select @recordcount = count(*) from ' + @tablename
if(@wherecondition !='')
begin
set @totalsql = @totalsql + N' where ' + @wherecondition
end
--print @totalsql
declare @parameters nvarchar(500)
set @parameters=N'@totalsql nvarchar(500),
@wherecondition nvarchar(500),
@tablename nvarchar(50),
@recordcount int output'
exec sp_executesql @totalsql,@parameters,
@totalsql,
@wherecondition,
@tablename,
@recordcount output
select @recordcount as 'recordcount'
@mainsql nvarchar(500), --主语句
@tempsql nvarchar(500), --临时变量
@ordersql nvarchar(500), --排序语句
@ordertype int, --排序类型(非0代表降序)
@primarykeyfield varchar(30), --主键字段
@pageindex int, --当前页索引
@pagesize int, --页尺寸
@wherecondition nvarchar(500), --查询条件
@tablename nvarchar(50) --表名
--
set @mainsql=N''
set @tempsql=N''
set @ordersql=N''
set @ordertype=1
set @primarykeyfield=N'id'
set @pageindex=1 --1273723
set @pagesize=100
set @wherecondition=N'cdate between ''2008-7-30 00:00:00'' and ''2008-7-30 23:38:13'''
set @tablename=N'mytable'
--
declare @topn int
set @topn=(@pageindex-1)*@pagesize
--
if(@ordertype!=0)
begin
set @tempsql=N'<(select min'
set @ordersql=N' order by [' + @primarykeyfield + N'] desc'
end
else
begin
set @tempsql=N'>(select max'
set @ordersql=N' order by [' + @primarykeyfield + N'] asc'
end
--
if(@pageindex=1)
begin
set @mainsql=N'select top ' + cast(@pagesize as nvarchar(500)) + N' * from ' + @tablename
if(@wherecondition !='')
begin
set @mainsql = @mainsql + N' where ' + @wherecondition
end
set @mainsql = @mainsql + @ordersql
end
else
begin
set @mainsql = @mainsql + N'select top ' + cast(@pagesize as nvarchar(500)) + N' * from ' + @tablename
set @mainsql = @mainsql + N' where [' + @primarykeyfield + N']' + @tempsql + N'([' + @primarykeyfield + N'])'
set @mainsql = @mainsql + N' from (select top ' + cast(@topn as nvarchar(500)) + N' [' +@primarykeyfield + N'] from ' + @tablename
if(@wherecondition !='')
begin
set @mainsql = @mainsql + N' where ' + @wherecondition
end
set @mainsql = @mainsql + @ordersql + N') as tblTmp)'
if(@wherecondition !='')
begin
set @mainsql = @mainsql + N' and ' + @wherecondition
end
set @mainsql = @mainsql + @ordersql
end
--print @mainsql
declare @parameters nvarchar(500)
set @parameters=N'@mainsql nvarchar(500),
@tempsql nvarchar(500),
@ordersql nvarchar(500),
@ordertype int,
@primarykeyfield varchar(30),
@pageindex int,
@pagesize int,
@wherecondition nvarchar(500),
@tablename nvarchar(50)'
exec sp_executesql @mainsql,@parameters,
@mainsql,
@tempsql,
@ordersql,
@ordertype,
@primarykeyfield,
@pageindex,
@pagesize,
@wherecondition,
@tablename
--
--计算总记录数
declare
@totalsql nvarchar(500), --计算总记录数
@wherecondition nvarchar(500), --查询条件
@tablename nvarchar(50), --表名
@recordcount int --总记录数 --output
--
set @wherecondition=N'cdate between ''2008-7-30 00:00:00'' and ''2008-7-30 23:38:13'''
set @tablename=N'mytable'
--
set @totalsql=N'select @recordcount = count(*) from ' + @tablename
if(@wherecondition !='')
begin
set @totalsql = @totalsql + N' where ' + @wherecondition
end
--print @totalsql
declare @parameters nvarchar(500)
set @parameters=N'@totalsql nvarchar(500),
@wherecondition nvarchar(500),
@tablename nvarchar(50),
@recordcount int output'
exec sp_executesql @totalsql,@parameters,
@totalsql,
@wherecondition,
@tablename,
@recordcount output
select @recordcount as 'recordcount'
- 我的sql自定义分页
- 我的SQL数据库分页
- 我写的一个自定义分页标签
- 我的T-SQL分页备忘
- 我的sql数据库存储过程分页- -
- Sql Server 2005自定义分页
- Sql Server 2005自定义分页
- 自定义分页组件DATAGRID-SQL
- 我用的两个分页算法 (sql server)
- 自定义的分页控件
- 我的分页类
- 我的分页类
- 我的hibernate分页
- 我的分页代码
- 我的分页控件
- 我的游标分页
- 我的真假分页
- 我的第一个M-SQL自定义函数
- 我国的PLC产品PLC的分类
- ToolTip 类编程介绍
- Rational Rose 2003
- 数据结构复习之线性表、栈和队列 (下)
- 7年后,我依然是菜鸟。
- 我的sql自定义分页
- 匈牙利表示法
- 126个Adobe Air应用列表
- 一棵开花的树--席慕容
- 无题
- TreeList应用(二)
- 報RegisterForEventValidation can only be called during Render()錯的處理方法
- 验证RequiredFieldValidator
- 项目管理(1)-信息时代的项目管理