一种存储过程处理方法和装置制造方法及图纸

技术编号:13298246 阅读:45 留言:0更新日期:2016-07-09 16:17
本发明专利技术公开了一种存储过程处理方法和装置,通过将返回结果集的存储过程编译成查询视图,实现对结果集的二次处理。该方法为:当从检测到的访问请求中识别出第一存储过程名时,根据所述第一存储过程名获取所述第一存储过程的结构化查询语言SQL代码;基于所述第一存储过程的SQL代码生成第二存储过程;执行所述第二存储过程,得到所述第二存储过程的返回结果;所述第二存储过程的返回结果为与所述第一存储过程的返回结果对应的SQL语句;基于所述第二存储过程返回的SQL语句生成所述第二存储过程的查询视图的SQL代码;执行所述第二存储过程的查询视图的SQL代码,生成所述第二存储过程的查询视图。

【技术实现步骤摘要】

本专利技术涉及数据库技术,尤其涉及一种存储过程处理方法和装置
技术介绍
存储过程(英文:StoredProcedure)是在大型数据库系统中,一组为了完成特定功能的SQL语句集(即SQL代码),经编译后存储在数据库中,用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来调用它。存储过程是数据库中的一个重要对象,可用于报表开发。报表开发过程一般分为两个步骤:数据准备和显示样式设计,其中数据准备一般有如下几种方式:第一种:直接编写结构化查询语言(英文:StructuredQueryLanguage,简称:SQL)语句;第二种:通过拖拽图元的方式进行数据表建模,自动生成SQL语句;第三种:调用存储过程。其中,第一种和第二种方式最终会生成一个查询视图,而查询视图支持对数据的二次处理,第三种方式最终仅仅是返回一个结果集,然而结果集是一个已经固定的记录集,只能读取数据,不支持对数据的其他任何操作。早期报表大部分都是用存储过程开发的,由此积累了大量基于存储过程开发的报表,但是由于存储过程最终返回的结果集不能进行二次处理,而存储过程是编译在数据库系统中的,不能随意修改,降低了存储过程使用的灵活性。
技术实现思路
本专利技术实施例提供一种存储过程处理方法和装置,用以解决因现有技术中无法对存储过程返回的结果集进行二次加工处理,造成存储过程使用灵活性降低的问题。第一方面,本专利技术提供了一种存储过程处理方法,该方法包括:当从检测到的访问请求中识别出第一存储过程名时,根据所述第一存储过程名获取所述第一存储过程的SQL代码;基于所述第一存储过程的SQL代码生成第二存储过程;执行所述第二存储过程,得到所述第二存储过程的返回结果;所述第二存储过程的返回结果为与所述第一存储过程的返回结果对应的SQL语句;基于所述第二存储过程返回的SQL语句生成所述第二存储过程的查询视图的SQL代码;执行所述第二存储过程的查询视图的SQL代码,生成所述第二存储过程的查询视图。结合第一方面,在第一方面的第一种可能的实现方式中,从检测到的访问请求中识别出第一存储过程名,包括:根据预定义的关键字,从检测到的访问请求中识别出第一存储过程名。结合第一方面,在第一方面的第二种可能的实现方式中,基于所述第一存储过程的SQL代码生成第二存储过程,包括:复制所述第一存储过程的SQL代码;将复制的第一存储过程的SQL代码中用于返回结果的第一SQL子代码调整为第二SQL子代码;对调整后的复制的第一存储过程的SQL代码进行编译,得到第二存储过程;其中,所述第一SQL子代码用于返回结果集,所述第二SQL子代码用于返回与所述结果集对应的SQL语句。结合第一方面的上述任意一种实现方式,在第一方面的第三种可能的实现方式中,生成所述第二存储过程的查询视图后,还包括:执行所述第二存储过程的查询视图中包含的select语句,得到所述第二存储过程的结果集。结合第一方面的第三种可能的实现方式,在第一方面的第四种可能的实现方式中,得到所述第二存储过程的结果集后,还包括:根据所述第二存储过程的查询视图,对所述第二存储过程的结果集进行二次处理,所述二次处理包括以下任意一项或组合:对所述结果集中的各字段进行过滤;对所述结果集中的各字段进行排序;对所述结果集中的各字段进行汇总;将所述结果集与其他结果集进行关联;提取所述结果集中排在前N位的字段。第二方面,本专利技术提供了一种存储过程处理装置,该装置包括:获取单元,用于当从检测到的访问请求中识别出第一存储过程名时,根据所述第一存储过程名获取所述第一存储过程的SQL代码;第一生成单元,用于基于所述第一存储过程的SQL代码生成第二存储过程;执行单元,用于执行所述第二存储过程,得到所述第二存储过程的返回结果;所述第二存储过程的返回结果为与所述第一存储过程的返回结果对应的SQL语句;第二生成单元,用于基于所述第二存储过程返回的SQL语句生成所述第二存储过程的查询视图的SQL代码;第三生成单元,用于执行所述第二存储过程的查询视图的SQL代码,生成所述第二存储过程的查询视图。结合第二方面,在第二方面的第一种可能的实现方式中,所述获取单元具体用于:根据预定义的关键字,从检测到的访问请求中识别出第一存储过程名。结合第二方面,在第二方面的第二种可能的实现方式中,所述第一生成单元具体用于:复制所述第一存储过程的SQL代码;将复制的第一存储过程的SQL代码中用于返回结果的第一SQL子代码调整为第二SQL子代码;对调整后的复制的第一存储过程的SQL代码进行编译,得到第二存储过程;其中,所述第一SQL子代码用于返回结果集,所述第二SQL子代码用于返回与所述结果集对应的SQL语句。结合第二方面的上述任意一种实现方式,在第二方面的第三种可能的实现方式中,所述装置还包括:处理单元,用于执行所述第二存储过程的查询视图中包含的select语句,得到所述第二存储过程的结果集。结合第二方面的第三种可能的实现方式,在第二方面的第四种可能的实现方式中,在得到所述第二存储过程的结果集后,所述处理单元还用于:根据所述第二存储过程的查询视图,对所述第二存储过程的结果集进行二次处理,所述二次处理包括以下任意一项或组合:对所述结果集中的各字段进行过滤;对所述结果集中的各字段进行排序;对所述结果集中的各字段进行汇总;将所述结果集与其他结果集进行关联;提取所述结果集中排在前N位的字段。本专利技术提供的方案,通过将返回结果集的存储过程编译成查询视图,实现对了结果集的二次处理,提高了存储过程使用的灵活性。附图说明图1为本专利技术实施例提供的一种存储过程处理方法的流程图;图2为本专利技术实施例提供的一种存储过程处理装置的结构图。具体实施方式本专利技术实施例提供了一种存储过程处理方法和装置,通过将返回结果集的存储过程编译成查询视图,实现对结果集的二次处理。下面结合说明书附图和各实施例对本专利技术技术方案进行说明。本专利技术实施例提供的一种存储过程处理方法和装置,可应用于具备处理器的各种计算机上,如通用个人计算机、便携式设备(如平板计算机)或智能手机等。所述存储过程处理装置通过有线或无线介质与数据库所在的服务器的标准接口相连,对外部程序(如报表平台)向数据库发起的访问请求进行监控和...

【技术保护点】
一种存储过程处理方法,其特征在于,包括:当从检测到的访问请求中识别出第一存储过程名时,根据所述第一存储过程名获取所述第一存储过程的结构化查询语言SQL代码;基于所述第一存储过程的SQL代码生成第二存储过程;执行所述第二存储过程,得到所述第二存储过程的返回结果;所述第二存储过程的返回结果为与所述第一存储过程的返回结果对应的SQL语句;基于所述第二存储过程返回的SQL语句生成所述第二存储过程的查询视图的SQL代码;执行所述第二存储过程的查询视图的SQL代码,生成所述第二存储过程的查询视图。

【技术特征摘要】
1.一种存储过程处理方法,其特征在于,包括:
当从检测到的访问请求中识别出第一存储过程名时,根据所述第一存储过
程名获取所述第一存储过程的结构化查询语言SQL代码;
基于所述第一存储过程的SQL代码生成第二存储过程;
执行所述第二存储过程,得到所述第二存储过程的返回结果;所述第二存
储过程的返回结果为与所述第一存储过程的返回结果对应的SQL语句;
基于所述第二存储过程返回的SQL语句生成所述第二存储过程的查询视
图的SQL代码;
执行所述第二存储过程的查询视图的SQL代码,生成所述第二存储过程
的查询视图。
2.如权利要求1所述的方法,其特征在于,从检测到的访问请求中识别
出第一存储过程名,包括:
根据预定义的关键字,从检测到的访问请求中识别出第一存储过程名。
3.如权利要求1所述的方法,其特征在于,基于所述第一存储过程的SQL
代码生成第二存储过程,包括:
复制所述第一存储过程的SQL代码;
将复制的第一存储过程的SQL代码中用于返回结果的第一SQL子代码调
整为第二SQL子代码;
对调整后的复制的第一存储过程的SQL代码进行编译,得到第二存储过
程;
其中,所述第一SQL子代码用于返回结果集,所述第二SQL子代码用于
返回与所述结果集对应的SQL语句。
4.如权利要求1-3中任意一项所述的方法,其特征在于,生成所述第二
存储过程的查询视图后,还包括:
执行所述第二存储过程的查询视图中包含的select语句,得到所述第二存

\t储过程的结果集。
5.如权利要求4所述的方法,其特征在于,得到所述第二存储过程的结
果集后,还包括:
根据所述第二存储过程的查询视图,对所述第二存储过程的结果集进行二
次处理,所述二次处理包括以下任意一项或组合:
对所述结果集中的各字段进行过滤;
对所述结果集中的各字段进行排序;
对所述结果集中的各字段进行汇总;
将所述结果集与其他结果集进行关联;
提取所述结果集中排在前N位的字段。
6.一种...

【专利技术属性】
技术研发人员:刘衍初
申请(专利权)人:华为技术有限公司
类型:发明
国别省市:广东;44

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1