在 CYQ.Data 分页是内部集成的功能,针对不同的数据库,使用不同的分页形式。

1:Access:集成:使用3次Top分页

2:MySql:集成,使用LimitN分页

3:Sqlite:集成,使用LimitN分页

4:Sql2000:外置存储过程,使用临时表方式分页

5:Sql2005:外置存储过程,使用ROW_NUMBER方式分页

6:Oracle:外置存储过程,使用RowNum方式分页

下面是三种不同存储过程代码:

1:CYQ.Data 数据框架在 SQL2000的

分页存储过程的代码:

create procedure SelectBase

@PageIndex int,

@PageSize int,

@TableName nvarchar(4000),

@Where nvarchar(2000)=''

as

Declare @rowcount int

Declare @intStart int

Declare @intEnd int

declare @Column1 varchar(32) --第一列名称

Declare @Sql nvarchar(2000), @WhereR nvarchar(1000), @OrderBy

nvarchar(1000)

set @rowcount=0

set nocount on

if @Where''

begin

set @Where=' and '+@Where

end

if CHARINDEX('order by', @Where)0

begin

set @WhereR=substring(@Where, 1, CHARINDEX('order

by',@Where)-1)--取得条件

set @OrderBy=substring(@Where, CHARINDEX('order by',@Where),

Len(@Where))--取得排序方式(order by 字段 方式)

end

else

begin

set @WhereR=@Where

set @OrderBy=' order by id asc'

end

set @Sql='SELECT @rowcount=count(*) from '+cast(@TableName as

varchar(4000))+' where 1=1 '+@WhereR

exec sp_executeSql @Sql,N'@rowcount int output',@rowcount

output

if @PageIndex=0 and @PageSize=0--不进行分页,查询所有数据列表

begin

set @Sql='SELECT * from '+cast(@TableName as varchar(4000))+' where

1=1 '+@Where

end

else--进行分页查询数据列表

begin

set @intStart=(@PageIndex-1)*@PageSize+1;

set @intEnd=@intStart+@PageSize-1

set @Column1=col_name(object_id(@tableName),1) --设置第一列名称

if @Column1 is null begin set @Column1='ID' end --设置默认为ID列

set @Sql='Create table #tem(tempID int identity(1,1) not null,Row

int) '

set @Sql=@Sql+'insert #tem(Row) select '+@Column1+' from

'+@TableName+' where 1=1 '+@Where

set @Sql=@Sql+' select * from '+@TableName+' left join #tem on

'+@Column1+'=#tem.Row '

set @Sql=@Sql+' where #tem.tempID between '+cast(@intStart as

varchar)+' and '+cast(@intEnd as varchar)

end

exec sp_executeSql @Sql

return @rowcount

set nocount off

GO

Tip:

最近有使用

SQL2000的网友在分页上出了点问题,经过重重排查,竟然是由于分页里的注释代码引起的。

所以,使用此分页存储过程的网友注意一下,如果有问题,请把注释删除。

2:CYQ.Data

数据框架在 SQL2005的

分页存储过程的代码:

Create procedure [SelectBase]

@PageIndex int,

@PageSize int,

@TableName nvarchar(4000),

@Where nvarchar(max)=''

as

Declare @rowcount int

Declare @intStart int

Declare @intEnd int

Declare @SQl nvarchar(max), @WhereR nvarchar(max), @OrderBy

nvarchar(max)

set @rowcount=0

set nocount on

if @Where''

begin

set @Where=' and '+@Where

end

if CHARINDEX('order by', @Where)0

begin

set @WhereR=substring(@Where, 1, CHARINDEX('order

by',@Where)-1)--取得条件

set @OrderBy=substring(@Where, CHARINDEX('order by',@Where),

Len(@Where))--取得排序方式(order by 字段 方式)

end

else

begin

set @WhereR=@Where

set @OrderBy=' order by id asc'

end

set @SQl='SELECT @rowcount=count(*) from '+cast(@TableName as

varchar(4000))+' where 1=1 '+@WhereR

exec sp_executeSql @SQl,N'@rowcount int output',@rowcount

output

if @PageIndex=0 and @PageSize=0--不进行分页,查询所有数据列表

begin

set @SQl='SELECT * from '+cast(@TableName as varchar(4000))+' where

1=1 '+@Where

end

else--进行分页查询数据列表

begin

set @intStart=(@PageIndex-1)*@PageSize+1;

set @intEnd=@intStart+@PageSize-1

set @SQl='select * from(select *,ROW_NUMBER() OVER('+cast(@OrderBy

as nvarchar(400))+') as row from '

set @SQl=@SQL+@TableName+' where 1=1 '+@WhereR+') as a where row

between '+cast(@intStart as varchar)+' and '+cast(@intEnd as

varchar)

end

exec sp_executeSql @SQl

return @rowcount

set nocount off

3:Oracle 的分页存储过程代码

这里就不贴了,见帖子:折腾Oracle问题小菜记[分页存储过程/查询所有表、视图、存储过程/查询表、视图、存储过程字段结构与参数](三)

cyq.data mysql_CYQ.Data 数据框架 数据库分页方式及存储过程[SQL2000/SQL2005/Oracle]相关推荐

  1. cyq.data mysql_CYQ.Data 轻量数据层之路 V4.3 版本发布[增加对SQLite,MySQL数据库的支持]...

    前言: 继上一版本:CYQ.Data 轻量数据层之路 V4.0 版本发布,又过去一个来月了,不过也过了一个新年了. 由于过年原因,因此框架也没多折腾什么,只是年前年后顺路把sqlite,MysqL两种 ...

  2. cyq.data mysql_CYQ.Data 数据框架 使用篇一 入门指南

    原文链接:http://www.cyqdata.com/cyqdata/article-detail-411 本文针对V5版本进行修改于(2016-07-04) 下面是使用步骤: 一:下载框架DLL[ ...

  3. mysql批量加逗号_批量插入数据到数据库的方式

    出于性能的考虑.用Insert语句一条一条的插入大量数据到数据库肯定不是最好的选择.指不定还会把数据库搞死了. 前几天,用户提了需求,要求写Job实现,每天清空一个Table,然后将新发过来的数据In ...

  4. cyq.data mysql_CYQ.Data 支持 PostgreSQL 数据库

    前言: 很久之前,就有同学问我CYQ.Data能不能支持下PostgreSQL,之后小做了下调查,发现这个数据库用的人少,加上各种因素,就一直没动手. 前两天,不小心看了一下Github上的消息: 看 ...

  5. oracle数据库赋权_实用的数据库赋权的存储过程,用于oracle

    存储过程对所有数据库内容进行赋权和同义词,赋权的帐号通过参数传入,本代码设定的帐号有6个. ----------Create on 2017-08-21 by i-24@qq.com publish ...

  6. python加数据库_用python批量插入数据到数据库中

    既然使用python操作数据库必不可少的得使用pymysql模块 可使用两种方式进行下载安装: 1.使用pip方式下载安装 pip install pymysql 2.IDE方式 安装完成后就可以正常 ...

  7. cyq.data 连接mysql_CYQ.Data 轻量数据层之路 框架如何应对数据库变化

    内容: 请问大家是如何处理以下问题: Model是数据库表的实体映射,当系统的需求出现新的变换,例如增加新的功能时数据库需要增加新的字段, 或需要去掉和更换某些旧的功能,那么对应的数据库字段肯定是会修 ...

  8. cyq.data mysql_CYQ.Data4.5.5下载-CYQ.Data数据框架整套下载4.5.5 免费版【附源码】-东坡下载...

    CYQ.Data是路过秋天分享的一款支持超多数据库的数据框架类库,它界面简洁,操作简单,功能强大易用,支持多语言,多数据库,RSS,AOP等功能,小编这附上CYQ.Data4.5.5整套下载. CYQ ...

  9. CYQ.Data 轻量数据层之路 框架如何应对数据库变化

    2019独角兽企业重金招聘Python工程师标准>>> 今天在群里有人发了一帖子链接:关于Model数据实体层,欢迎大家来讨论 内容: 请问大家是如何处理以下问题: Model是数据 ...

最新文章

  1. 解决github push错误403 Forbidden while accessing
  2. [zt] petshop4.0 详解之三
  3. 单数据源:spring boot+mybatisplus启动后访问接口报错Invalid bound statement (not found)
  4. (十一)MyBatis的动态SQL:trim元素
  5. ubuntu下安装Node.js(源码安装)
  6. jquery.text()和.html()的原理
  7. python地图匹配_python通过BF算法实现关键词匹配的方法
  8. 解决ubuntu下arduino IDE的Serial Port无法选择问题
  9. 卸载所有supervisor残留_拯救C盘!这个良心的卸载工具还是免费的?!
  10. 军用装备温湿度循环测试,温湿度环境可靠性实验室GJB150A
  11. 新萝卜家园 GhostXP_SP3 五一纪念版
  12. linux系统如何使用ocr图片文字识别
  13. 用python根据最新的汇率,假设你要出国留学要换外币,输入一定数量的人民币,比如1000元人民币, 按照中国银行的现钞卖出价,输出可换到对应的加元和澳元分别是多少。
  14. 二行代码解决全部网页木马(含iframe/script木马)
  15. 单片机轻松入门之三:蜂鸣器,单片机驱动蜂鸣器电路
  16. UVA12304-2D Geometry 110 in 1!
  17. ps—Photoshop中八种颜色模式
  18. Pytorch 如何 优化/调整 模型参数
  19. bandgap中简并点理解与仿真
  20. windows安装Oracle12 (服务端+客户端)

热门文章

  1. 荣耀v40和荣耀v30pro 哪个好
  2. 计算机win10启动慢,win10电脑启动慢怎么回事_win10系统开机启动速度慢的解决步骤-win7之家...
  3. 中职计算机基础知识点笔记1
  4. python和小爱同学_小爱mini与小爱同学除了外观,还有什么较大的区别?
  5. 51单片机——定时器中断
  6. 适配linux的机械键盘,完美适配macOS的机械键盘又多一款 买买买
  7. 微信APP支付功能开发
  8. Xml文件保存聊天记录
  9. 知识点总结Day01——JAVA基础知识、开发环境搭建、入门程序、常量、变量及数据类型
  10. nvidia jetson nx cuda+cudnn安装