【技术实现步骤摘要】
转换PLSQL代码的方法、装置、电子设备及存储介质
[0001]本专利技术属于人工智能
,尤其涉及一种转换PLSQL代码的方法、装置、电子设备及存储介质。
技术介绍
[0002]对于数据存储方案,当前很多公司的业务均是采用了oracle,其中,oracle提供了package,可以很方便地组织业务逻辑,但是这种面向数据库的业务逻辑很难跟上业务的发展。因此,往往需要让oracle回归数据存储,将业务逻辑从package中抽离出来,并翻译成其他语言。
[0003]目前,oracle的翻译方案主要包括如下两种:
[0004]第一,采用人工翻译,这种方式的好处是可以对老代码进行重构,缺点是工作量太大,耗时耗力,这对很多业务特别是功能逻辑很重的业务来说是不现实的。
[0005]第二,采用机器自动翻译,普遍采用字符串匹配的方式,这种方式适合对结构简单的PLSQL语句进行逐句翻译,难以处理复杂的上下文关系,翻译出来的代码比较僵硬,不符合开发的代码习惯。并且,对于不同场景类型的PLSQL代码,很难针对性地进行转 ...
【技术保护点】
【技术特征摘要】
1.一种转换PLSQL代码的方法,其特征在于,包括:获取待转换的PLSQL代码文本,其中,所述PLSQL代码文本携带有loop循环块语句对象、cursor循环fetch语句对象和exit when语句对象;对所述PLSQL代码文本进行翻译处理,生成与所述PLSQL代码文本对应的语法树,其中,所述语法树包括有与所述loop循环块语句对象对应的loop stmt节点、与所述cursor循环fetch语句对象对应的fetch stmt节点、以及与所述exit when语句对象对应的exit stmt节点;对所述语法树中的节点进行遍历,并获取所述语法树中所述loop stmt节点、所述fetch stmt节点和所述exit stmt节点之间的节点位置顺序;根据所述节点位置顺序对所述PLSQL代码文本进行识别处理,得到所述PLSQL代码文本的场景类型;根据所述场景类型对所述PLSQL代码文本进行转换处理,得到目标代码文本。2.根据权利要求1所述的转换PLSQL代码的方法,其特征在于,所述对所述语法树中的节点进行遍历,并获取所述语法树中所述loop stmt节点、所述fetch stmt节点和所述exit stmt节点之间的节点位置顺序,包括:对所述语法树中的节点进行遍历,确定所述语法树的节点位置顺序为:所述loop stmt节点的第一个子节点为所述fetch stmt节点,并且所述loop stmt节点的第二个子节点为所述exit stmt节点。3.根据权利要求2所述的转换PLSQL代码的方法,其特征在于,所述根据所述节点位置顺序对所述PLSQL代码文本进行识别处理,得到所述PLSQL代码文本的场景类型,包括:在所述节点位置顺序为所述loop stmt节点的第一个子节点为所述fetch stmt节点,并且所述loop stmt节点的第二个子节点为所述exit stmt节点的情况下,对所述PLSQL代码文本进行识别处理以得到所述PLSQL代码文本的场景类型为:所述cursor循环fetch语句对象和所述exit when语句对象均位于所述loop循环块语句对象中。4.根据权利要求3所述的转换PLSQL代码的方法,其特征在于,所述根据所述场景类型对所述PLSQL代码文本进行转换处理,得到目标代码文本,包括:在对所述PLSQL代码文本进行转换处理的过程中,将所述loop循环块语句对象转换为while循环块语句对象,并且将cursor是否还有下一条数据作为所述while循环块语句对象的进入条件,以及删除所述exit when语句对象。5.根据权利要求1所述的转换PLSQL代码的方法,其特征在于,所述对所述语法树中的节点进行遍历,并获取所述语法树中所述loop stmt节点、所述fetch stmt节点和所述exit stmt节点之间的节点位置顺序,包括:对所述语...
【专利技术属性】
技术研发人员:黄聪,温秋明,
申请(专利权)人:中国平安人寿保险股份有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。