分享:在存储过程中使用另一个存储过程返回的查询结果集的方法
发布时间:2024-01-16 13:03:57
很多查询类的存储过程会返回一个表结构的结果集,如果在其他存储过程中需要用到这个结果集,为了避免编写重复的sql脚本,可以直接使用前者的查询结果。
如,存储过程sp_GetBorrowRecord @BeginTime,@EndTime 可以查询出某一时间范围(开始时间@BeginTime,结束时间@EndTime)内的所有借书记录。这个存储过程可以用于对借书记录的查询页面。
现在需要实现另一个功能:将某时间段内的借书记录进行汇总分析。如按被借阅的书籍类型进行分组,并按各类书籍的借书总数进行排序。当然可以直接使用group by等方法直接重新进行查询,但为了说明本例,暂且用另一种方法进行实现,并且该方法也有其特有的优势(在文章最后会提到)。如下所示,建一个新的存储过程:
--获取借书记录分析情况
create proc sp_GetBorrowAnalysis
@BeginTime datetime,
@EndTime datetime
as
--建一个表变量,结构与sp_GetBorrowRecord查询出的结果集相同
declare @Record table
(
BookID int, --书籍ID
BookName varchar(100), --书籍名称
TypeID int, --书籍类别ID
CardID int --借书卡ID
CardName varchar(100) --借书人姓名
)
--获取这段时间内的借书记录,并存入@Record表变量中
insert into @Record
exec sp_GetBorrowRecord @BeginTime,@EndTime
--接下来,就可以像使用一个普通的表一样,对查出的数据(@Record中的数据)进行所需要的各项处理
--。。。。。
go
使用这种方法的好处是可以避免编写重复的代码,并且利于维护。如果借书记录的查询条件发生变化,比如除了根据时间范围进行筛选,还需要根据借书卡是否有效,或所借书籍是否仍然存在等条件进行筛选,那么只需要维护sp_GetBorrowRecord存储过程即可,不需要将所有涉及到查询借书记录的存储过程全部修改一遍。但这种方法在查询的数据量较大的情况下比较影响性能,查询速度较慢,在数据量较小的情况下这种差异并不明显。
注:需要在sql server2005或更高版本中使用,低版本的sql server不支持该方法。
猜你喜欢
- 今天小编利用美丽的汤来为大家演示一下如何实现京东商品信息的精准匹配~~HTML文件其实就是由一组尖括号构成的标签组织起来的,每一对尖括号形式
- 假设我们要添加一个我们自己的Middleware,用来记录每次请求的日志下面就是一个符合规范的Middleware, 构造函数中接受一个WS
- requests是常用的请求库,不管是写爬虫脚本,还是测试接口返回数据等。都是很简单常用的工具。这里就记录一下如何用requests发送js
- 摘要数据分析与建模的时候大部分时间在数据准备上,包括对数据的加载、清理、转换以及重塑。pandas提供了一组高级的、灵活的、高效的核心函数,
- <SCRIPT language="javascript"> function&nbs
- 1303-Can 't create a PROCEDURE from within another stored routine.
- 开发自定义Web框架接收web服务器的动态资源请求,给web服务器提供处理动态资源请求的服务。根据请求资源路径的后缀名进行判断:如果请求资源
- 函数先定义函数,后调用一、定义函数:1、简单的规则:函数代码块以 def 关键词开头,后接函数标识符名称和圆括号&nbs
- 最近在研究雨哲软件采集程序的时候,需要获取真实软件地址时遇到了需要读取跳转页面跳转后的真实地址的问题。在网上找了很多方法,使用WinHttp
- 本文实例为大家分享了python实现发送QQ邮件的具体代码,供大家参考,具体内容如下东西比较简单,简单讲一下,直接贴代码了,其他邮箱都类似。
- 一、安装apt-get install mysql-server 需要设置账号密码apt-get isntall mysql-clienta
- 用6N±1法求素数 任何一个自然数,总可以表示成为如下的形式之一: 6N,6N+1,6N+2,6N+3,6N+4,6N+5 (N=0,1,2
- 单线程实现多个定时器NewTimer.py#!/usr/bin/env pythonfrom heapq import *from thre
- 本文实例讲述了Python Excel到CSV的转换程序。分享给大家供大家参考,具体如下:题目如下:利用第十二章的openpyxl模块,编程
- 让Python提速超过40倍的神器:Cython人工智能最火的语言,自然是被誉为迄今为止最容易使用的代码之一的Python。Python代码
- 随着CSS3越来越热,CSS3动画也逐渐受到大家的关注。这次有幸修改淘宝网全站页头,小小地应用了下(详见http://www.taobao.
- 本文实例为大家分享了vue+elementUI实现动态面包屑的具体代码,供大家参考,具体内容如下引言后台管理系统中,经常会出现需要面包屑的情
- 使用正则库爬取淘宝商品的商品信息,首先我们需要确定想要爬取的对象我们在淘宝里搜索“python”,出来的结果从url连接中可以得到搜索商品的
- Django 简介Django是一个开放源代码的Web应用框架,由Python写成。采用了MTV的框架模式,即模型M,视图V和模版T。它最初
- 前言因为自已平时会把一个常用到逻辑写成一个工具python脚本,像关于时间字符串处理,像关于路径和文件夹遍历什么的工具。每一次新建一个项目的