[发明专利]SQL语句的执行方法、装置、设备和存储介质有效
| 申请号: | 202010785598.5 | 申请日: | 2020-08-06 |
| 公开(公告)号: | CN111949684B | 公开(公告)日: | 2023-08-11 |
| 发明(设计)人: | 望声宜;朱仲颖;韩朱忠 | 申请(专利权)人: | 上海达梦数据库有限公司 |
| 主分类号: | G06F16/242 | 分类号: | G06F16/242;G06F16/2455 |
| 代理公司: | 北京品源专利代理有限公司 11332 | 代理人: | 孟金喆 |
| 地址: | 201203 上海*** | 国省代码: | 上海;31 |
| 权利要求书: | 查看更多 | 说明书: | 查看更多 |
| 摘要: | |||
| 搜索关键词: | sql 语句 执行 方法 装置 设备 存储 介质 | ||
1.一种SQL语句的执行方法,其特征在于,包括:
获取待执行结构化查询语言SQL语句中所调用的目标with函数的标识,其中,所述标识包括所述目标with函数在整个SQL语句块中的层级的描述信息;
确定所述整个SQL语句块对应的根方法执行计划,并调用与所述标识对应的子方法执行计划,其中,所述子方法执行计划与所述根方法执行计划相关;
执行所述子方法执行计划,以完成所述待执行SQL语句的执行;
其中,在所述获取待执行SQL语句中所调用的目标with函数的标识之前,所述方法还包括:
构建所述整个SQL语句块对应的根符号表;
以所述根符号表作为下一层符号表的父层符号表,递归向下逐层解析所述整个SQL语句块中的每条SQL语句,其中,每条SQL语句对应不同的符号表,且符号表用于存储对应SQL语句所访问的对象的信息;
当所述待执行SQL语句中包括所述目标with函数的定义体时,解析所述待执行SQL语句,包括:
构建所述待执行SQL语句的符号表;
根据所述待执行SQL语句的符号表,先解析所述目标with函数的定义体,再解析所述待执行SQL语句中的其它组成部分;
所述解析所述目标with函数的定义体,包括:
构建所述目标with函数的本层符号表,并将所述本层符号表作为所述待执行SQL语句的符号表的子符号表;
根据所述本层符号表中存储的对象的信息,解析所述目标with函数的定义体;
其中,所述目标with函数的定义体具有所述本层符号表中已登记的对象的访问权限,以及具有从所述本层符号表递归查找上一层符号表直到根符号表中已登记的对象的访问权限;所述目标with函数的本层符号表的层次号等于所述待执行SQL语句的符号表的层次号与1之和;非with函数的目标SQL语句的符号表的层次号与所述目标SQL语句的父层符号表的层次号相一致;当目标with函数的定义体中包括子with函数的定义体时,所述子with函数的符号表的层次号相对所述目标with函数的符号表的层次号逐层递增。
2.根据权利要求1所述的方法,其特征在于,在解析所述待执行SQL语句中的其它组成部分时,所述待执行SQL语句不具有所述目标with函数的本层符号表中已登记的对象的访问权限。
3.根据权利要求1所述的方法,其特征在于,还包括:创建所述目标with函数的对象,并将该对象添加到所述目标with函数的父层符号表的with函数对象数组中,所述目标with函数的父层符号表为所述待执行SQL语句的符号表。
4.根据权利要求3所述的方法,其特征在于,所述目标with函数的对象的优先级高于数据库中所创建的同名对象。
5.根据权利要求3所述的方法,其特征在于,还包括:
创建所述整个SQL语句块中的各个with函数的逻辑方法;
构建所述整个SQL语句块的逻辑方法的父子关系;
按照所述整个SQL语句块对应的各个符号表之间的父子关系,从所述根符号表开始,逐层定位各层符号表中登记的with函数,为每个登记的with函数的逻辑方法生成子方法执行计划,并基于所述逻辑方法的父子关系,将所述子方法执行计划存储到父方法执行计划的子方法执行计划数组中,其中,所述父方法执行计划为上一层逻辑方法对应的方法执行计划。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于上海达梦数据库有限公司,未经上海达梦数据库有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202010785598.5/1.html,转载请声明来源钻瓜专利网。





