转换PLSQL代码的方法、装置、电子设备及存储介质制造方法及图纸

技术编号:34325536 阅读:19 留言:0更新日期:2022-07-31 01:03
本发明专利技术实施例提供了一种转换PLSQL代码的方法、装置、电子设备及存储介质,包括:获取待转换的携带有loop循环块语句对象、cursor循环fetch语句对象和exit when语句对象的PLSQL代码文本;对PLSQL代码文本进行翻译处理,生成语法树,语法树包括有对应的loop stmt节点、fetch stmt节点和exit stmt节点;对语法树中的节点进行遍历,并获取语法树中loop stmt节点、fetch stmt节点和exit stmt节点之间的节点位置顺序;根据节点位置顺序对PLSQL代码文本进行识别处理,得到PLSQL代码文本的场景类型;根据场景类型对PLSQL代码文本进行转换处理,得到目标代码文本。本发明专利技术实施例不仅能够实现自动翻译,而且还能够使得目标代码更符合编码习惯,代码可读性大大提高,还能够针对不同的场景类型针对性地进行转换处理。同的场景类型针对性地进行转换处理。同的场景类型针对性地进行转换处理。

【技术实现步骤摘要】
转换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节点之间的节点位置顺序,包括:对所述语...

【专利技术属性】
技术研发人员:黄聪温秋明
申请(专利权)人:中国平安人寿保险股份有限公司
类型:发明
国别省市:

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

1