一种数据库变量参数作用域控制方法、装置及设备制造方法及图纸

技术编号:36437596 阅读:21 留言:0更新日期:2023-01-20 22:51
本发明专利技术提供的一种数据库变量参数作用域控制方法、装置及设备,获取发送的SQL语句;解析所述SQL语句内各层查询语句间的嵌套关系;对目标查询语句进行语法合法性解析、语义合法性解析以及根据所述目标查询语句内预设的提示内容建立参数对象列表,并检查参数的合法性;建立所述目标查询语句的抽象语法树,将所述参数对象列表存储至所述抽象语法树的结构中;根据所述嵌套关系,将所述SQL语句内所有的抽象语法树构建为一个完整语法树;执行所述SQL语句的完整语法树,并返回执行结果。本申请所述的一种数据库变量参数作用域控制方法、装置及设备,实现对数据库变量参数的作用域进行更细粒度地控制。更细粒度地控制。更细粒度地控制。

【技术实现步骤摘要】
一种数据库变量参数作用域控制方法、装置及设备


[0001]本专利技术属于数据库
,尤其是涉及一种数据库变量参数作用域控制方法、装置及设备。

技术介绍

[0002]数据库产品中可能存在大量的系统级(作用于当前的数据库服务)的变量参数,这些系统级的变量参数作用非常广泛,有用于优化的变量参数,有用于隔离某些功能的变量参数,也有一些干预数据库某些中间行为的变量参数。无论是哪一种变量参数对于数据库来讲都是非常非常重要的,但是目前设定参数的方法只有两种,方法一是写在所有相关配置文件中达到服务级全局有效的目的,方法二是使用独立SQL语句的方式在数据库客户端中设定。
[0003]但是,两种方法在数据库中的作用域(影响范围)均有可能造成影响过大的负作用隐患,方法一服务全局生效是对所有执行的SQL语句的算法均受到影响,方法二会对当前连接生效也会对当前连接运行的所有SQL语句产生影响。如果修改了一个参数,可能会影响其他语句的执行,那结果不可估量。
[0004]因此,对数据库变量参数的作用域进行更细粒度地控制具有重要意义。

技术实现思路

[0005]有鉴于此,本专利技术旨在提出一种数据库变量参数作用域控制方法、装置及设备,以对数据库变量参数的作用域进行更细粒度地控制。
[0006]为达到上述目的,本专利技术的技术方案是这样实现的:第一方面,本申请提出一种数据库变量参数作用域控制方法,包括:获取客户端发送的SQL语句;解析所述SQL语句,确定所述SQL语句内各层查询语句间的嵌套关系;对目标查询语句进行语法合法性解析、语义合法性解析以及根据所述目标查询语句内预设的提示内容建立参数对象列表,并检查参数的合法性;所述提示内容包括参数变量及所述参数变量的作用域信息,所述参数变量包括变量名及赋予所述变量名的新变量值,所述参数对象列表用于存储所述参数变量内的所述变量名与所述变量名对应的所述新变量值,所述目标查询语句为所述SQL语句中多层查询语句中的任意一层;建立所述目标查询语句的抽象语法树,将所述参数对象列表存储至所述抽象语法树的结构中;根据所述嵌套关系,将所述SQL语句内所有的抽象语法树构建为一个完整语法树;执行所述SQL语句的完整语法树,并返回执行结果。
[0007]可选的,所述对目标查询语句进行语法合法性解析、语义合法性解析以及根据所述目标查询语句内预设的提示内容建立参数对象列表,并检查参数的合法性,包括:对目标查询语句进行语法解析,形成所述目标查询语句的结构实体,并检查所述
目标查询语句的语法合法性,若合法则继续执行,若不合法则报错;对所述目标查询语句的结构实体进行语义解析,并检查所述目标查询语句的结构实体的语义合法性,若合法则继续执行,若不合法则报错;对所述目标查询语句内的提示内容进行参数的对象化,建立参数对象列表,并检查所述参数的合法性,若合法则继续执行,若不合法则报错。
[0008]可选的,预设的提示内容是指在用户生成所述SQL语句时,编写在所述目标查询语句内的关键词后面的提示内容。
[0009]可选的,若提示内容的参数变量的作用域信息为父查询语句影响子查询语句的继承关系,则设置包括变量名和新变量值的提示;若提示内容的变量参数的作用域信息仅作用于所述提示内容所在层的查询语句,则设置包括作用域标识、变量名以及新变量值的提示,所述作用域标识为local。
[0010]可选的,在所述根据所述嵌套关系,将所述SQL语句内所有的抽象语法树构建为一个完整语法树之后,包括:遍历所述完整语法树,根据每个参数变量对应的作用域信息,确定所述参数变量与所述参数变量作用的抽象语法树的关联关系;根据所述关联关系,将所述参数变量的参数对象列表存储至对应的抽象语法树;所述执行所述SQL语句的完整语法树,包括:所述SQL语句中的每层抽象语法树根据对应的参数对象列表修改参数,并执行所述SQL语句的完整语法树。
[0011]第二方面,本申请还提出一种数据库变量参数作用域控制装置,包括:获取模块,用于获取客户端发送的SQL语句;第一解析模块,用于解析所述SQL语句,确定所述SQL语句内各层查询语句间的嵌套关系;第二解析模块,用于对目标查询语句进行语法合法性解析、语义合法性解析以及根据所述目标查询语句内预设的提示内容建立参数对象列表,并检查参数的合法性;所述提示内容包括参数变量及所述参数变量的作用域信息,所述参数变量包括变量名及赋予所述变量名的新变量值,所述参数对象列表用于存储所述参数变量内的所述变量名与所述变量名对应的所述新变量值,所述目标查询语句为所述SQL语句中多层查询语句中的任意一层;第一生成模块,用于建立所述目标查询语句的抽象语法树,将所述参数对象列表存储至所述抽象语法树的结构中;第二生成模块,用于根据所述嵌套关系,将所述SQL语句内所有的抽象语法树构建为一个完整语法树;执行模块,用于执行所述SQL语句的完整语法树,并返回执行结果。
[0012]可选的,所述第二解析模块包括:语法解析子模块,用于对目标查询语句进行语法解析,形成所述目标查询语句的结构实体,并检查所述目标查询语句的语法合法性,若合法则继续执行,若不合法则报错;语法解析子模块,用于对所述目标查询语句的结构实体进行语义解析,并检查所述目标查询语句的结构实体的语义合法性,若合法则继续执行,若不合法则报错;
对象化子模块,用于对所述目标查询语句内的提示内容进行参数的对象化,建立参数对象列表,并检查所述参数的合法性,若合法则继续执行,若不合法则报错。
[0013]可选的,该装置还包括关联模块,用于遍历所述完整语法树,根据每个参数变量对应的作用域信息,确定所述参数变量与所述参数变量作用的抽象语法树的关联关系;根据所述关联关系,将所述参数变量的参数对象列表存储至对应的抽象语法树;所述执行模块,还用于所述SQL语句中的每层抽象语法树根据对应的参数对象列表修改参数,并执行所述SQL语句的完整语法树。
[0014]第三方面,本申请还提出一种数据库变量参数作用域控制设备,包括存储器和处理器,所述存储器用于存储代码或程序,所述处理器用于调用所述代码或程序实现第一方面所述的一种数据库变量参数作用域控制方法。
[0015]相对于现有技术,本专利技术所述的一种数据库变量参数作用域控制方法、装置及设备具有以下有益效果:本申请使用提示的方式设定参数变量,通过建立各层查询语句的抽象语法树并将抽象语法树根据各层查询语句的嵌套关系建立完成语法树,对整个SQL语句查询过程的实现方式进行了完整揭露。在需要进行参数调整的查询语句中设置对应的提示内容,并在提示内容中设置作用域信息及参数变量,明确设置有提示内容的每层查询语句的变量参数的作用域,有效解决业务场景中对于变量参数的更小粒度的控制的需要。
附图说明
[0016]构成本专利技术的一部分的附图用来提供对本专利技术的进一步理解,本专利技术的示意性实施例及其说明用于解释本专利技术,并不构成对本专利技术的不当限定。在附图中:图1为本专利技术实施例所述的一种数据库变量参数作用域控制方法流程图。
[0017]图2为本专利技术实施例本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种数据库变量参数作用域控制方法,其特征在于,包括:获取客户端发送的SQL语句;解析所述SQL语句,确定所述SQL语句内各层查询语句间的嵌套关系;对目标查询语句进行语法合法性解析、语义合法性解析以及根据所述目标查询语句内预设的提示内容建立参数对象列表,并检查参数的合法性;所述提示内容包括参数变量及所述参数变量的作用域信息,所述参数变量包括变量名及赋予所述变量名的新变量值,所述参数对象列表用于存储所述参数变量内的所述变量名与所述变量名对应的所述新变量值,所述目标查询语句为所述SQL语句中多层查询语句中的任意一层;建立所述目标查询语句的抽象语法树,将所述参数对象列表存储至所述抽象语法树的结构中;根据所述嵌套关系,将所述SQL语句内所有的抽象语法树构建为一个完整语法树;执行所述SQL语句的完整语法树,并返回执行结果。2.根据权利要求1所述的一种数据库变量参数作用域控制方法,其特征在于,所述对目标查询语句进行语法合法性解析、语义合法性解析以及根据所述目标查询语句内预设的提示内容建立参数对象列表,并检查参数的合法性,包括:对目标查询语句进行语法解析,形成所述目标查询语句的结构实体,并检查所述目标查询语句的语法合法性,若合法则继续执行,若不合法则报错;对所述目标查询语句的结构实体进行语义解析,并检查所述目标查询语句的结构实体的语义合法性,若合法则继续执行,若不合法则报错;对所述目标查询语句内的提示内容进行参数的对象化,建立参数对象列表,并检查所述参数的合法性,若合法则继续执行,若不合法则报错。3.根据权利要求1所述的一种数据库变量参数作用域控制方法,其特征在于,预设的提示内容是指在用户生成所述SQL语句时,编写在所述目标查询语句内的关键词后面的提示内容。4.根据权利要求1所述的一种数据库变量参数作用域控制方法,其特征在于,若提示内容的参数变量的作用域信息为父查询语句影响子查询语句的继承关系,则设置包括变量名和新变量值的提示;若提示内容的变量参数的作用域信息仅作用于所述提示内容所在层的查询语句,则设置包括作用域标识、变量名以及新变量值的提示,所述作用域标识为local。5.根据权利要求1所述的一种数据库变量参数作用域控制方法,其特征在于,在所述根据所述嵌套关系,将所述SQL语句内所有的抽象语法树构建为一个完整语法树之后,包括:遍历所述完整语法树,根据每个参数变量对应的作用域信息,确定所述参数变量与所述参数变量作用的抽象语法树的关联关系;根据所述关联关系,将所述参数变量的参数对象列表存储至对应的抽象语法树;所...

【专利技术属性】
技术研发人员:崔杰李晨光
申请(专利权)人:天津南大通用数据技术股份有限公司
类型:发明
国别省市:

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

1