转存储过程实现分页1
CREATE
PROCEDURE
page
@tblName
varchar
(255),
-- 表名
@strGetFields
varchar
(1000) =
'*'
,
-- 需要返回的列
@fldName
varchar
(255)=
'id'
,
-- 排序的字段名
@PageSize
int
= 10,
-- 页尺寸
@PageIndex
int
= 1,
-- 页码
@doCount
bit
= 0,
-- 返回记录总数, 非 0 值则返回
@OrderType
bit
= 0,
-- 设置排序类型, 非 0 值则降序 0:asc 1:desc
@strWhere
varchar
(1500) =
''
,
-- 查询条件 (注意: 不要加 where)
@ID nvarchar(50)=
'id'
--主表的列。。最好是主键
AS
declare
@strSQL
varchar
(5000)
-- 主语句
declare
@strTmp
varchar
(110)
-- 临时变量
declare
@strOrder
varchar
(400)
-- 排序类
if @doCount != 0
begin
if @strWhere !=
''
set
@strSQL =
'select count(*) as Total from '
+ @tblName+
' where '
+@strWhere
else
set
@strSQL =
'select count(*) as Total from '
+ @tblName +
''
end
--以上代码的意思是如果@doCount传递过来的不是0,就执行总数统计。以下的所有代码都是@doCount为0的情况
else
begin
if @OrderType != 0
begin
set
@strTmp =
'<(select min'
set
@strOrder =
' order by '
+ @fldName +
' desc'
--如果@OrderType不是0,就执行降序,这句很重要!
end
else
begin
set
@strTmp =
'>(select max'
set
@strOrder =
' order by '
+ @fldName +
' asc'
end
if @PageIndex = 1
begin
if @strWhere !=
''
set
@strSQL =
'select top '
+ str(@PageSize) +
' '
+@strGetFields+
' from '
+ @tblName +
' where '
+ @strWhere +
' '
+ @strOrder
else
set
@strSQL =
'select top '
+ str(@PageSize) +
' '
+@strGetFields+
' from '
+ @tblName +
' '
+ @strOrder
--如果是第一页就执行以上代码,这样会加快执行速度
end
else
begin
--以下代码赋予了@strSQL以真正执行的SQL代码
set
@strSQL =
'select top '
+ str(@PageSize) +
' '
+@strGetFields+
' from '
+ @tblName +
' where '
+ @fldName +
' '
+ @strTmp +
'( '
+ @ID +
' ) from (select top '
+ str((@PageIndex-1)*@PageSize) +
' '
+ @fldName +
' from '
+ @tblName + @strOrder +
') as tblTmp)'
+ @strOrder
if @strWhere !=
''
set
@strSQL =
'select top '
+ str(@PageSize) +
' '
+@strGetFields+
' from '
+ @tblName +
' where '
+ @fldName +
' '
+ @strTmp +
'('
+ @ID +
') from (select top '
+ str((@PageIndex-1)*@PageSize) +
' '
+ @fldName +
' from '
+ @tblName +
' where '
+ @strWhere +
' '
+ @strOrder +
') as tblTmp) and '
+ @strWhere +
' '
+ @strOrder
end
end
exec
(@strSQL)
转载于:https://www.cnblogs.com/rhc2005163/archive/2012/04/05/2433137.html
转存储过程实现分页1相关推荐
- 三层架构+ajax分页实例,ASP.NET存储过程实现分页效果(三层架构)
本文实例为大家分享了ASP.NET存储过程实现分页的具体代码,供大家参考,具体内容如下 实现效果: 文本框内输入跳转的页数,点击GO会跳转到该页 首先在项目下加入BLL,DAL,DataAccess, ...
- SQL Server 存储过程的分页方案比拼
建立表: CREATE TABLE [TestTable] ( [ID] [int] IDENTITY (1, 1) NOT NULL , [FirstName] [nvarchar] (100) ...
- SQL Server 存储过程的分页
Code --建立表: CREATE TABLE [TestTable] ( [ID] [int] IDENTITY (1, 1) NOT NULL , [FirstName] [nvarchar ...
- 存储过程DataGrid分页及注意点
sqlserver中的存储过程完整代码 /***************************************************************** * 存储过程名: GetC ...
- 使用存储过程创建分页
在实际的开发过程中,经常遇到存储过程分页,下面根据实际情况总结的几种方法: 数据库名称:myTest 1.思路:利用select top and select not in 排除例外情况的分页 use ...
- oralce用存储过程实现分页 以及 用java调用这个存储过程的代码
1 PL SQL 创建一个包 2 PL SQL 存储过程分页第一张图 3 PL SQL 存储过程分页第二张图 4 java 调用存储过程第一张图 5 java 调用存储过程 第二张图
- EF调用存储过程实现分页
1.通用分页代码 public static List<T> SelectPageList<T>(string sqlstr, int pageIndex, int pages ...
- 封装EF code first用存储过程的分页方法
一年半没有做过MVC的项目了,还是很怀念(因为现在项目还是原来的ASPX),个人还是喜欢mvc,最近又开始重拾MVC,感觉既熟悉又陌生. 记录一下封装好的分页代码 首先先说下 我使用EF codefi ...
- mysql 高效分页存储过程_mysql分页存储过程
CREATE PROCEDURE 'sp_page'( in _pagecurrent int,--/*当前页*/ in _pagesize int,--/*每页的记录数*/ in _ifelse v ...
- MSSQLServer基础07(事务,存储过程,分页的存储过程,触发器)
事务 事务:保证多个操作全部成功,否则全部失败,这处机制就是事务 思考:下了个订单,但是在保存详细信息时出错了,这样可以成功吗? 数据库中的事务:代码全都成功则提交,如果有某一条语句失败则回滚,整体失 ...
最新文章
- 特征值与特征向量的意义
- 实至名归!ACM宣布深度学习三巨头共同获得图灵奖
- Visual Studio 2022编译x86 或者 win32程序时的错误MSB6006
- 【揭秘】Slack:从0到10亿美元的产品是怎样炼成的
- 2003白金一代NBA选秀
- 全库模式 用户模式 表模式_暗模式,亮模式和用户的故事
- python删除指定行_关于csv:删除python中的特定行和对应文件
- 小甲鱼 OllyDbg 教程系列 (十一) : inline patch ( 内嵌补丁 )
- 隆重推荐一本虚拟化方面的重量级图书
- Linux 启动流程即init程序分析--2
- ubuntu换系统下载路径源
- 基于ssm+vue的综合项目 健康体检管理系统-第十章-权限控制、图形报表
- paypal接入指南
- Python爬虫——爬取网站的图片
- python和mysql匹配吗_python使用mysql
- message——UVM
- qlv转php,如何将qlv文件转换成mp,qlv文件怎么免费转换为mp4格式
- memcached win64位服务端安装和java客户端实例
- 两台服务器公用一个显示器,两台服务器链接一台显示器
- MATLAB中sin(i)求和