昨天写存储过程时遇到一个麻烦,再搜寻答案时搜到了“通用存储过程”,但只看到部分残缺代码,多方参考后,鄙人对其进行总结规范,得出以下规范存储过程,竟然把本人项目里50多个查询存储过程代替!不敢独享,遂贴出与大家分享,希望对大家有所帮助!!
该存储过程几乎可以涵盖所有查询存储过程(目前本人还没有发现不能使用的)
参数:分页大小,第几页,需要得到的字段 ,需要查询的表 , 查询条件,排序的字段名,排序的类型,主键名称
输入参数即可查询,无论是查询一条记录还是查询多条记录,无论是分页还是不分页,无论是需要查询条件还是不需要查询条件……,都可使用此通用的存储过程!!!
通用性相当好!!
/*通用分页存储过程*/
USE HotelManagementSystem
GO
IF EXISTS(SELECT * FROM sys.objects WHERE NAME='cndoup_GetPageOfRecords')
DROP PROCEDURE cndoup_GetPageOfRecords
GO
--创建存储过程
CREATE PROCEDURE cndoup_GetPageOfRecords
@pageSize int = 20, --分页大小
@currentPage int , --第几页
@columns varchar(1000) = '*', --需要得到的字段
@tableName varchar(100), --需要查询的表
@condition varchar(1000) = '', --查询条件, 不用加where关键字
@ascColumn varchar(100) = '', --排序的字段名 (即 order by column asc/desc)
@bitOrderType bit = 0, --排序的类型 (0为升序,1为降序)
@pkColumn varchar(50) = '' --主键名称
AS
BEGIN --存储过程开始
DECLARE @strTemp varchar(300)
DECLARE @strSql varchar(5000) --该存储过程最后执行的语句
DECLARE @strOrderType varchar(1000) --排序类型语句 (order by column asc或者order by column desc)
BEGIN
IF @bitOrderType = 1 --降序
BEGIN
SET @strOrderType = ' ORDER BY '+@ascColumn+' DESC'
SET @strTemp = '<(SELECT min'
END
ELSE --升序
BEGIN
SET @strOrderType = ' ORDER BY '+@ascColumn+' ASC'
SET @strTemp = '>(SELECT max'
END
IF @currentPage = 1 --第一页
BEGIN
IF @condition != ''
SET @strSql = 'SELECT TOP '+STR(@pageSize)+' '+@columns+' FROM '+@tableName+
' WHERE '+@condition+@strOrderType
ELSE
SET @strSql = 'SELECT TOP '+STR(@pageSize)+' '+@columns+' FROM '+@tableName+@strOrderType
END
ELSE -- 其他页
BEGIN
IF @condition !=''
SET @strSql = 'SELECT TOP '+STR(@pageSize)+' '+@columns+' FROM '+@tableName+
' WHERE '+@condition+' AND '+@pkColumn+@strTemp+'('+@pkColumn+')'+' FROM (SELECT TOP '+STR((@currentPage-1)*@pageSize)+
' '+@pkColumn+' FROM '+@tableName'where'+@condition+@strOrderType+') AS TabTemp)'+@strOrderType
ELSE
SET @strSql = 'SELECT TOP '+STR(@pageSize)+' '+@columns+' FROM '+@tableName+
' WHERE '+@pkColumn+@strTemp+'('+@pkColumn+')'+' FROM (SELECT TOP '+STR((@currentPage-1)*@pageSize)+' '+@pkColumn+
' FROM '+@tableName+@strOrderType+') AS TabTemp)'+@strOrderType
END
END
EXEC (@strSql)
END --存储过程结束
--分页得到客房信息列表测试
EXEC cndoup_GetPageOfRecords 20,2,'房间号=RoomNum,
房间状态=(SELECT RoomTypeDes FROM RoomType WHERE RoomTypeID=Room.RoomTypeID),
房间状态=(SELECT RSDec FROM RoomStatus WHERE RoomStatusID=Room.RoomStatusID),
床位数=BedNum,
楼层=Floors,
描述=RoomDes,
备注=RoomRemark','Room','','RoomID',0,'RoomID'
--根据房间号得到客房信息测试
EXEC cndoup_GetPageOfRecords 1,1,'房间号=RoomNum,
房间状态=(SELECT RoomTypeDes FROM RoomType WHERE RoomTypeID=Room.RoomTypeID),
房间状态=(SELECT RSDec FROM RoomStatus WHERE RoomStatusID=Room.RoomStatusID),
BedNum,
Floors,
RoomDes,
RoomRemark','Room','RoomNum=304','RoomID',0,'RoomID'
--· 得到客房类型信息列表测试
EXEC cndoup_GetPageOfRecords 10,1,'RoomTypeDes,Price,Area,AddBed,MaxBedNum,BedPrice,HourRoom,HourPrice,Remark','RoomType','','RoomTypeID',0,'RoomTypeID'
本文出自 “cndo” 博客,请务必保留此出处
http://51cndo.blog.51cto.com/491222/102320
分享到:
相关推荐
该存储过程几乎可以涵盖所有查询存储...输入参数即可查询,无论是查询一条记录还是查询多条记录,无论是分页还是不分页,无论是需要查询条件还是不需要查询条件……,都可使用此通用的存储过程!!! 通用性相当好!!
【资源介绍】:SQL分页存储过程<br>【备注】:<br>亲爱的下载用户:<br> 谢谢您光临CSDN阿Q资源中心!<br> 本中心发布的资源均是经过本人测试通过后才发布的,请放心下载。如果您有不清楚的问题或者建议,请您通过...
几点说明:<br> <br> 1.数据库的主机名、用户名、密码和数据库名请先在common.inc.php中修改。<br> <br> 2.本程序使用mysql建表,使用时请先按上述要求修改配置,然后运行里面的sql_setup.php即可。<br> <br> 3.留言...
sql Server 通用分页存储过程 sql Server 通用分页存储过程 sql Server 通用分页存储过程 sql Server 通用分页存储过程
关于<li>列表的分页及Table的分页 js实现 适用静态分页
这个晚上发了好多东西.....<br>这个分页组件更不同谈了..<br>为JSP分页烦恼的同志们来下,<br>为分页占RESULTSET的同志们更要来<br><br>组件的科重用性很高的哦!!<br>里面更有详细的说明!!<br>唉. 送你们了
yPager分页控件 正式推出第一个版本 T 1.1.5<br><br><br>开发环境:VS2003+Windows2003<br>概述:一款采用URL进行分页的控件,支持在Vs模式下进行调试,支持Repeater,DataList,DataGrid等控件<br>是否开源:是<br...
不足 <br> 控件暂时只支持SQL数据库其他数据库的支持接口以完成还没来得及写,有时间我会升级<br> 控件暂时不支持存储过程<br> 现在发布的也只是个BATE版有BUG欢迎指正<br> 邮箱:wensifww@163.com<br> QQ:24754991...
升级说明:<br> v1.2 已修改了分页显示代码,用以支持AC版动网论坛<br> v1.1 已修改了显示回收站帖子的问题<br> <br> <br> 安装步骤:<br> 安装很简单!只需将 archive.css、Archive_index.asp、Archive_view.asp三...
开发环境:VS2008 (C#)+ WindowsXP + SQL Server 2005<br>主要功能:留言、显示历史访问量、显示当前在线人数、显示当前时间、分页、记录留言页数 。功能比较简单,比较适合菜鸟级的朋友们学习研究!<br><br>联系...
10<br><br>0023 如何添加引用第3方控件 11<br><br>0024 如何生成DLL文件 11<br><br>0025 如何使用不安全代码 11<br><br>第2章 语言基础 13<br><br>2.1 注释 14<br><br>0026 如何对代码进行注释 14<br>...
<br> 实例48 追加记录<br> 实例49 删除记录<br> 实例50 更新记录<br> 实例51 分页显示记录<br> 实例52 调用存储过程<br> 实例53 事务处理<br> 实例54 利用连接池访问数据库<br>JSP中JavaBean的应用<br> 实例55 在JSP...
<br>第1章 Java基础 <br>1.1 转换基本数据类型 <br>1.2 Java的运算符 <br>1.3 控制程序的流程 <br>1.4 计算阶乘 <br>1.5 实现命令行程序 <br>第2章 Java面向对象程序设计 <br>2. 1 复数类 <br>2. 2 equals.chashCode...
<br>系统设计<br> 1 jive设计思路 <br> 2 jive的工作内幕 <br> 3 Jive源代码研究 <br> 4 Jive中的设计模式 <br> 5 jive学习笔记 <br><br><br> <br>设计模式<br> 1 大道至简-Java之23种模式一点就通 <br> 2 设计模式...
不足 <br> 控件暂时只支持SQL数据库其他数据库的支持接口以完成还没来得及写,有时间我会升级<br> 控件暂时不支持存储过程<br> 现在发布的也只是个BATE版有BUG欢迎指正<br> 邮箱:wensifww@163.com<br> QQ:24754991...
不足 <br> 控件暂时只支持SQL数据库其他数据库的支持接口以完成还没来得及写,有时间我会升级<br> 控件暂时不支持存储过程<br> 现在发布的也只是个BATE版有BUG欢迎指正<br> 邮箱:wensifww@163.com<br> QQ:24754991...
Tomcat.JSP<br>JSWDK环境安装与配置<br>Resin服务器平台介绍<br>Resin在...<br>通用信息发布程序<br>JSP概述及音乐店设计<br>不用odbc直接连接SQL Server<br>jsp的出错处理<br>jsp的wap应用<br>jsp实现购物程序<br>用...
58<br>练一练 60<br>动态添加菜单按钮到Toolbar 61<br>更方便的是 61<br>下一步是 62<br>模板(Templates)起步 62<br>第一步 您的HTML模板 62<br>第二步,将数据加入到模板中 62<br>下一步 63<br>学习利用模板...
不足 <br> 控件暂时只支持SQL数据库其他数据库的支持接口以完成还没来得及写,有时间我会升级<br> 控件暂时不支持存储过程<br> 现在发布的也只是个BATE版有BUG欢迎指正<br> 邮箱:wensifww@163.com<br> QQ:24754991...