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. 去掉不必要的查询和搜索字段:其实在项目的实际应用中,很多查询条件是可有可无的,能从源头上避免的多余功能尽量砍掉, ...
随机推荐
- SequoiaDB 笔记
SequoiaDB 笔记 这几天翻了翻SequoiaDB的代码,记了点笔记.不保证下面内容的正确性(肯定有错的地方) 个人观感 优点 代码还不错,设计也算简洁. EDU和CB的使用让整个系统变得简单很 ...
- 1、Python环境安装部署
一.环境准备 1.下载Python安装包(至官方网站) https://www.python.org/downloads/ 建议下载安装最新版 2.设置"环境变量" "我 ...
- centos 7.2 网卡配置文件 及 linux bridge的静态配置
在 centos 7.2 系统内, 网卡的配置文件在: /etc/sysconfig/network-scripts/ 下. 命名规则: ifcfg-xxxx. xxx为设备名称. 通过分析 ne ...
- Linux解压和打包jar
linux 中解压jarunzip XXX.jar -d app 打jar 进入到解压目录里面(app)jar cvfm0 MR-XDR-JMR-NEW.jar META-INF/MANIFEST.M ...
- win7配置SMTP服务
有人说WIN7系统没有SMTP服务 怎么可能呢??? 具体安装步骤如下: 控制面板\程序>打开和关闭Windows功能 Internet信息服务 将 万维网服务>应用程序开发功能> ...
- Linux 查找文件
find 查找目录 -name "文件名"find / -name "php.ini"locate 文件名locate php.ini 一:locate命令 l ...
- scala-尾递归
------------------------- by chenkh ----------------------------- 随笔记录什么是尾递归,为什么需要尾递归,尾递归show by exa ...
- SEO优化小技巧
/** * seo优化课程 * 先谢慕课网 */ /** * SEO基本介绍 * SEO与前端工程师 */ /** * SEO基本介绍 * 搜索引擎工作原理:输入关键字------查询------显示 ...
- string、Empty和null三者的区别
string.Empty和null三者的区别 本文转自 http://www.bitscn.com/pdb/dotnet/201003/181883.html 时间:2010-03-01 00:00 ...
- Python 无限循环
import threading import time class CountDownTimer(threading.Thread): def __init__(self, seconds, act ...