mssql查询分页存储过程SpPageOrder/proc_wuhan_getpages )
@OrderfldName varchar(255), -- 排序字段名
@PageSize int = 10, -- 页尺寸
@PageIndex int = 1, -- 页码
@IsReCount bit = 0, -- 返回记录总数, 非 0 值则返回
@OrderType bit = 0, -- 设置排序类型, 非 0 值则降序
@strWhere varchar(1000) = -- 查询条件 (注意: 不要加 where)
AS
declare @strSQL varchar(6000) -- 主语句
declare @strTmp varchar(100) -- 临时变量(查询条件过长时可能会出错,可修改100为1000)
declare @strOrder varchar(400) -- 排序类型
if @OrderType != 0
begin
set @strTmp = (select min
set @strOrder = order by + @OrderfldName + desc
end
else
begin
set @strTmp = (select max
set @strOrder = order by + @OrderfldName + asc
end
set @strSQL = select top + str(@PageSize) + + @fldName + from [
+ @tblName + ] where [ + @OrderfldName + ] + @strTmp + ([
+ @OrderfldName + ]) from (select top + str((@PageIndex-1)*@PageSize) + [
+ @OrderfldName + ] from [ + @tblName + ] + @strOrder + ) as tblTmp)
+ @strOrder
if @strWhere !=
set @strSQL = select top + str(@PageSize) + + @fldName + from [
+ @tblName + ] where [ + @OrderfldName + ] + @strTmp + ([
+ @OrderfldName + ]) from (select top + str((@PageIndex-1)*@PageSize) + [
+ @OrderfldName + ] from [ + @tblName + ] where + @strWhere +
+ @strOrder + ) as tblTmp) and + @strWhere + + @strOrder
if @PageIndex = 1
begin
set @strTmp =
if @strWhere !=
set @strTmp = where + @strWhere
set @strSQL = select top + str(@PageSize) + + @fldName + from [
+ @tblName + ] + @strTmp + + @strOrder
end
if @IsReCount != 0
set @strSQL = @strSQL+ select count(1) as Total from [ + @tblName + ]
if @strWhere!=
set @strSQL = @strSQL+ where + @strWhere
exec (@strSQL)
GO
----调用方法,调用后生成两张表第一张表中有数据,第二张表就有全部记录数 ds.Tables[1].Rows[0]["Total"];
SpPageOrder booktype,*,typeid ,4 ,1 ,1 ,1
--名称:创建分页存储过程
--时间:2011-07-04
--作者:wuhan 吴晗
create proc proc_wuhan_getpages --创建存储过程
@pageSize int, --页大小
@currentPage int, --当前页(第几页)
@tableName nvarchar(100), --表名
@columns nvarchar(1000), --字段名
@condition nvarchar(100), --查询条件
@orderType int, --排序类型(0为升序,1为降序)
@orderColumn nvarchar(100), --排序字段
@premaryKeyColumn nvarchar(100) --主键字段名称
as
begin
declare @strSqlStatement nvarchar(2000) --存储过程最后执行的语句
declare @chartype nvarchar(10)
begin
if @condition= --查询条件为空
begin
if @orderType=0 --升序
begin
set @chartype= asc
set @strSqlStatement = select top +ltrim(@pageSize) +
+@columns + from + @tableName+ where ( + @premaryKeyColumn+ not in (select Top + convert(char,@pageSize *(@currentPage-1))+ @premaryKeyColumn+ from + @tableName + order by
+@orderColumn + @chartype +)) order by
+@orderColumn+ @chartype
end
else if @orderType=1
begin
set @chartype= desc --降序
set @strSqlStatement = select top +ltrim(@pageSize) +
+@columns + from + @tableName+ where ( + @premaryKeyColumn+ not in (select Top + convert(char,@pageSize *(@currentPage-1))+ @premaryKeyColumn+ from + @tableName + order by
+@orderColumn + @chartype +)) order by
+@orderColumn+ @chartype
end
end
else if @condition!= --查询条件不为空
begin
if @orderType=0 --升序
begin
set @chartype= asc
set @strSqlStatement = select top +ltrim(@pageSize) +
+@columns + from + @tableName+ where (+ @premaryKeyColumn+ not in (select Top + convert(char,@pageSize *(@currentPage-1))+ @premaryKeyColumn+ from + @tableName + order by
+@orderColumn + @chartype +)and + @condition +) order by
+@orderColumn+ @chartype
end
else if @orderType=1
begin
set @chartype= desc --降序
set @strSqlStatement = select top +ltrim(@pageSize) +
+@columns + from + @tableName+ where ( + @premaryKeyColumn+ not in (select Top + convert(char,@pageSize *(@currentPage-1))+ @premaryKeyColumn+ from + @tableName + order by
+@orderColumn + @chartype+) and + @condition +)order by
+@orderColumn+ @chartype
end
end
end
--print @strSqlStatement --输出最后要执行的语句
exec (@strSqlStatement)
end
SELECT * FROM table LIMIT [offset,] rows | rows OFFSET offset 在我们使用查询语句的时候,经常要返回前几条或者中间某几行数据,这个时候怎么办呢?不用担心,mysql已经为我们提供了上面这样一个功能。
相关文章
- 复旦大学961-数据结构-第二章-树(4)-完全树的数组存储形式
- Confluence 6 如何备份存储文件和页面信息
- 【数据蒋堂】第12期:存储过程的利之弊
- 不可不看!即将发布的浪潮高端存储
- 使用闪存存储的优势与注意事项
- IBM升级多款存储产品
- Oracle 以及 达梦数据库简单查询所有表行数的存储过程
- Java内存分配及变量存储位置实例讲解
- HTML5客户端数据存储机制Web Storage和Web SQL Database
- 日立存储方案
- mysql 无法存储joda time的datetime类型
- NetApp在闪存存储、云和下一代数据中心蓄势待发
- 2009年 给存储业一份乐观的空间迎接寒冬
- 2023-02-21 mysql列存储引擎与innodb查询性能差异反思
- 2023-03-08 mysql列存储数据库-查询执行过程分析
- 2022-12-01 mysql列存储引擎-将exists子查询转换为between操作-分析
- 2022-09-23 mysql列存储引擎-执行HashJoin查询-耗尽磁盘空间
- 2022-09-29 mysql列存储引擎-查询结果不对-问题解决策略
- 通过存储过程运行通过DBLINK的查询语句失败-单个语句成功--ORA-00604
- 在Entity Framework中使用存储过程(四):如何为Delete存储过程参数赋上Current值?
- 在Centos8 中使用Stratis管理本地存储(一)
- 【jvm我能讲两小时008】class文件的字段表存储的什么信息,与常量池有什么联系?
- sql生成(查询数据的存储过程)代码的存储过程