sql通用的存储过程
QUOTED_IDENTIFIER ON GO ALTER proc [dbo].[UpPagerSingle]
@ReturnFields Varchar(500)='*',--搜索表的字段,比如:’id,datatime,job‘,用逗号隔开
@TableName Varchar(30), --搜索的表名 @Where Varchar(1000)='',--搜索条件,这里不用写where,比如:job=’teacher‘and class='2'
@Orderfld Varchar(200)='', --排序,可以使用多字段排序但主键字段必需在最前面.也可以不写,比如:order by class asc @PageIndex int=1, --页号
@PageSize int=20 --每页显示数 as
declare @RecordCount int=0 declare @TmpSelect NVarchar(max) declare @Tmp NVarchar(600)
set nocount on--关闭计数
if @Where!='' set @TmpSelect = 'select @RecordCount = count(*) from '+@TableName+' where '+@Where
else
set @TmpSelect='select @RecordCount=count(*) from '+@TableName+''
execute sp_executesql @TmpSelect, --执行上面的sql语句 N'@RecordCount int OUTPUT' , --执行输出数据的sql语句,output出总记录数
@RecordCount OUTPUT
/*判断页数是否正确*/
if (@PageIndex - 1) * @PageSize > @RecordCount --页号大于总页数,返回错误
begin
if(@RecordCount%@PageSize)>0
set @PageIndex=@RecordCount/@PageSize+1
else set @PageIndex=@RecordCount/@PageSize end set nocount off--打开计数
if @Where <> ''
begin
set @TmpSelect = 'select * from (select row_number() over('+@Orderfld+' ) rn,'+@ReturnFields+' from ' +@TableName+' where '+@Where+')tb where rn >' + convert(nvarchar(50),(@PageIndex-1)*@PageSize) +' and rn <= '+convert(nvarchar(50),@PageIndex*@PageSize)
end
else
begin
set @TmpSelect = 'select * from (select row_number() over('+@Orderfld+' ) rn,'+@ReturnFields+' from ' +@TableName+')tb where rn >' + convert(nvarchar(50),(@PageIndex-1)*@PageSize) +' and rn <= '+convert(nvarchar(50),@PageIndex*@PageSize)
end
execute sp_executesql @TmpSelect
SELECT @RecordCount As RecordCount
sql通用的存储过程的更多相关文章
- SQL Server 2008 通用分页存储过程
1.alert USE [数据库名称] GO /****** Object: StoredProcedure [dbo].[dbTab_PagerHelper] Script Date: 08/22/ ...
- SQL Server利用RowNumber()内置函数与Over关键字实现通用分页存储过程(支持单表或多表结查集分页)
SQL Server利用RowNumber()内置函数与Over关键字实现通用分页存储过程,支持单表或多表结查集分页,存储过程如下: /******************/ --Author:梦在旅 ...
- SQL Server的通用分页存储过程 未使用游标,速度更快!
经过一个下午的时间,和我一个同事(绝对是高手)的共同努力下,摸索出了以下的思路: 1.确定存储的输入参数: 1)SQL脚本,该参数接收完整的.正确的SQL检索文本,可将原应用中写好的SQL脚本直接传入 ...
- Sql Server通用分页存储过程
Sql Server2005通用分页存储过程 CREATE PROCEDURE [dbo].[Common_GetPagedList] ( @TableName nvarchar(100), --表名 ...
- 支持DISTINCT的通用分页存储过程(SQL2005)
/****** 对象: StoredProcedure [dbo].[P_CommonPagination] 脚本日期: 07/22/2009 10:22:01 ******/ SET ANSI_NU ...
- MySql通用分页存储过程
MySql通用分页存储过程 1MySql通用分页存储过程 2 3过程参数 4p_cloumns varchar(500),p_tables varchar(100),p_where varchar(4 ...
- Atiitt 使用java语言编写sql函数或存储过程
Atiitt 使用java语言编写sql函数或存储过程 1.1. java编写sql函数或存储过程的机制1 1.2. Java编写sp的优点1 1.3. 支持java源码,class文件,blog f ...
- Oracle通用分页存储过程的创建与使用
Oracle通用分页存储过程的创建与使用 1.创建Oracle包的定义.使用 REF CURSOR 数据类型来处理 Oracle 结果集.REF CURSOR 是一个指向 PL/SQL 查询所返回的结 ...
- SQL通用优化方案(where优化、索引优化、分页优化、事务优化、临时表优化)
SQL通用优化方案:1. 使用参数化查询:防止SQL注入,预编译SQL命令提高效率2. 去掉不必要的查询和搜索字段:其实在项目的实际应用中,很多查询条件是可有可无的,能从源头上避免的多余功能尽量砍掉, ...
随机推荐
- 移动端自动化环境搭建-Robot Framework的安装
A.安装依赖 RF框架,robotframework本身. B.安装过程 可以通过下载 exe 程序进行安装,Robot Framework 分别提供了,win-amd64.exe 和 win32.e ...
- 关于nginx的1W并发的优化
我们来看一下图,下面的这张图清晰的表明了nginx优化的一些方法: nginx要响应请求的话,必须要: 1.要建立socket连接 2.是要读本地的文件 所以这就是我们的一个优化的方向: 所以参考照上 ...
- VUE 入门基础(4)
四,计算属性 基础例子 <div id='example'> <p>0riginal message: "{{message}}"</p> &l ...
- ThinkPHP升级指导
升级指导 http://www.kancloud.cn/manual/thinkphp5/163239 从V5.0.1升级到V5.0.2 从V5.0.1升级到V5.0.2需要注意如下事项: 下列模型属 ...
- 原生js操作dom备忘
<!DOCTYPE html> <html lang="zh-CN"> <head> <meta charset="utf-8& ...
- Spark-Mllib(二)基本统计
一.基本统计量 统计向量的长度,最大值,最小值,非0个数,模1和模2,方差等 import org.apache.spark.mllib.linalg.{Vector,Vectors} import ...
- redis启用持久化
redis的持久化有rdb和aof两种. rdb是记录一段时间内的操作,一盘的配置是一段时间内操作超过多少次就持久化. aof可以实现每次操作都持久化. 这里我们使用aof. 配置方式,打开redis ...
- C++设计模式——简单工厂模式
简单工厂模式(Simple Factory Pattern) 介绍:简单工厂模式不能说是一个设计模式,说它是一种编程习惯可能更恰当些.因为它至少不是Gof23种设计模式之一.但它在实际的编程中经常被用 ...
- 九宝老师微信小程序开发的过程
- 通过RGB灯输出七色
本文由博主原创,如有不对之处请指明,转载请说明出处. /********************************* 代码功能:输出模拟信号,控制RGB灯的颜色 使用函数: pinMode(引脚 ...