[发明专利]数据查询方法和装置有效
申请号: | 201410466552.1 | 申请日: | 2014-09-12 |
公开(公告)号: | CN104239508B | 公开(公告)日: | 2017-05-10 |
发明(设计)人: | 黄坚;戴明海 | 申请(专利权)人: | 中国工商银行股份有限公司 |
主分类号: | G06F17/30 | 分类号: | G06F17/30 |
代理公司: | 北京三友知识产权代理有限公司11127 | 代理人: | 王天尧 |
地址: | 100140 北*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 数据 查询 方法 装置 | ||
技术领域
本发明涉及数据处理技术领域,特别涉及一种数据查询方法和装置。
背景技术
Oracle数据库是当前主流的数据库之一,目前,许多企业采用Oracle数据库进行企业数据的存储。在使用应用软件的过程中,经常需要进行灵活条件的查询,例如:一个查询可能存在多项查询条件,但并非所有的查询条件都是必要的,用户在使用的时候往往仅需要其中部分的查询条件就可以满足查询要求。因此,需要灵活的查询,以允许用户灵活把握查询的维度和粒度,从而更为方便快速地查询到用户所需的结果。
对于上述的灵活查询,通常在JAVA中可以直接实现,然而出于对系统分层设计的考虑,浏览器/服务器模式(Browser/Server,BS)系统中通常将对数据库的访问采用存储过程的方式实现,即,所有的数据库逻辑都在存储过程中实现,JAVA程序在整个过程中只调用存储过程、传递输入参数、获取结果。
然而,在实际使用的过程中,Oracle数据库的存储过程使用的过程化SQL(Procedural Language/SQL,PL/SQL)语言中的本地动态结构化查询语言(Structured Query Language,SQL)在查询条件使用绑定变量时,只能支持固定的查询条件。如果查询条件不固定,但需要使用SQL,那么就需要使用非绑定变量的方式进行查询,然而,非绑定变量的SQL查询方式存在如下两个问题:1)会因为无法共享SQL而造成大量的硬解析,导致系统开销增大,处理效率下降;2)由于非绑定变量方式中直接将变量值写入SQL语句文本中,存在SQL引入问题,容易出现安全风险。
因此,在查询条件不固定的情况下,如何使用绑定变量的方式进行SQL数据查询显得尤为重要。
发明内容
本发明实施例提供了一种数据查询方法,以达到在查询条件不固定的情况下采用绑定变量的SQL方式进行数据查询的目的,其中,该方法包括:
在接收的结构化查询语言SQL语句中携带变量名称时,获取用户根据所述变量名称输入的查询条件值;
将所述变量名称与所述查询条件值进行绑定;
预判所述SQL语句执行输出的查询结果的数据类型;
根据预判的数据类型为所述SQL语句执行输出的查询结果分配数据存储变量数组;
执行所述SQL语句,将所述SQL语句执行输出的查询结果存储在分配的数据存储变量数组中;
将所述数据存储变量数组中存储的查询结果提供给应用程序。
在一个实施例中,根据预判的数据类型为所述SQL语句执行输出的查询结果分配数据存储变量数组,包括:
在所述SQL语句执行输出的查询结果中包括多个输出字段时,确定所述多个输出字段中各个输出字段的数据类型,根据确定的数据类型为每个字段分别分配对应的数据存储变量数组中的元素。
调用预定的绑定函数,将输出字段与数据存储变量数组中的元素进行一对一的绑定。
在一个实施例中,执行所述SQL语句,将所述SQL语句执行输出的查询结果存储在分配的数据存储变量数组中,包括:
为所述SQL语句分配游标;
根据分配的游标,将所述SQL语句执行输出的查询结果逐一存储在分配的数据存储变量数组对应的元素中。
在一个实施例中,在将所述数据存储变量数组中存储的查询结果提供给应用程序之后,所述方法还包括:
释放为所述SQL语句分配的游标,和所述数据存储变量数组所占用的资源。
在一个实施例中,将所述SQL语句执行输出的查询结果存储在分配的数据存储变量数组中,包括:
设定游标在所述查询结果的第一条记录上,将所述第一条记录存储至所述数据存储变量数组中;
移动游标至下一条记录上,确定是否存在记录;
如果存在记录,则将当前的记录存储至所述数据存储变量数组对应的元素中,直至游标移动至最后一条记录。
在一个实施例中,所述SQL语句中携带的变量名称,和用户输入的查询条件值是可变的。
本发明实施例还提供了一种数据查询装置,以达到在查询条件不固定的情况下采用绑定变量的SQL方式进行数据查询的目的,其中,该装置包括:
获取模块,用于在接收的结构化查询语言SQL语句中携带变量名称时,获取用户根据所述变量名称输入的查询条件值;
绑定模块,用于将所述变量名称与所述查询条件值进行绑定;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中国工商银行股份有限公司,未经中国工商银行股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201410466552.1/2.html,转载请声明来源钻瓜专利网。
- 数据显示系统、数据中继设备、数据中继方法、数据系统、接收设备和数据读取方法
- 数据记录方法、数据记录装置、数据记录媒体、数据重播方法和数据重播装置
- 数据发送方法、数据发送系统、数据发送装置以及数据结构
- 数据显示系统、数据中继设备、数据中继方法及数据系统
- 数据嵌入装置、数据嵌入方法、数据提取装置及数据提取方法
- 数据管理装置、数据编辑装置、数据阅览装置、数据管理方法、数据编辑方法以及数据阅览方法
- 数据发送和数据接收设备、数据发送和数据接收方法
- 数据发送装置、数据接收装置、数据收发系统、数据发送方法、数据接收方法和数据收发方法
- 数据发送方法、数据再现方法、数据发送装置及数据再现装置
- 数据发送方法、数据再现方法、数据发送装置及数据再现装置