CN114791812A - Plsql代码的java转换方法、装置、电子设备及存储介质 - Google Patents

Plsql代码的java转换方法、装置、电子设备及存储介质 Download PDF

Info

Publication number
CN114791812A
CN114791812A CN202210360621.5A CN202210360621A CN114791812A CN 114791812 A CN114791812 A CN 114791812A CN 202210360621 A CN202210360621 A CN 202210360621A CN 114791812 A CN114791812 A CN 114791812A
Authority
CN
China
Prior art keywords
text
type
plsql
code
java
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202210360621.5A
Other languages
English (en)
Inventor
钟加武
黄聪
温秋明
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Ping An Life Insurance Company of China Ltd
Original Assignee
Ping An Life Insurance Company of China Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Ping An Life Insurance Company of China Ltd filed Critical Ping An Life Insurance Company of China Ltd
Priority to CN202210360621.5A priority Critical patent/CN114791812A/zh
Publication of CN114791812A publication Critical patent/CN114791812A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/52Binary to binary
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/42Syntactic analysis

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

本发明实施例提供了一种PLSQL代码的JAVA转换方法、装置、电子设备及存储介质,包括:获取待转换的PLSQL代码文本;对所述PLSQL代码文本进行识别处理,识别出所述PLSQL代码文本的文本类型,其中,所述文本类型包括如下之一:变量命名类型、基础数据类型、自定义结构类型、数组类型、package类型;根据所述文本类型对预设的多个语法树进行筛选处理,筛选出与所述文本类型对应的语法树,其中,不同所述文本类型所对应的所述语法树具有不同的处理节点;采用筛选得到的所述语法树中的所述处理节点对所述PLSQL代码文本进行翻译处理,得到文本信息;对所述文本信息进行转换处理,得到JAVA代码文本。本发明实施例能够在不需要人工介入的情况下顺利对等地将PLSQL代码翻译成JAVA代码。

Description

PLSQL代码的JAVA转换方法、装置、电子设备及存储介质
技术领域
本发明属于人工智能技术领域,尤其涉及一种PLSQL代码的JAVA转换方法、装置、电子设备及存储介质。
背景技术
关于PLSQL语言和JAVA语言,具体地,PLSQL是过程化SQL语言,JAVA是编译型面向对象语言,两者差别较大。由于涉及到变量定义、特殊字符、关键字、数组、自定义结构、表达式、控制流、函数、包等等的对等转换,另外还有一些PLSQL支持而JAVA不支持的语法,因此,难以采用机器对等地将PLSQL翻译成JAVA。
现有技术中,一般是通过字符串匹配的方式识别出各种token,基于此再做一些简单的语言翻译。这种方案比较原始,适合做简单的逐句翻译,但处理复杂上下文关系的能力不足,再进一步要做目标代码的美化更是不可能;面对语法丰富的PLSQL,字符串匹配的方案要做到完全的语法对等转换很困难,甚至是不可能完成的任务,因此往往需要人工介入以保证将PLSQL翻译成JAVA的正确性。
发明内容
以下是对本文详细描述的主题的概述。本概述并非是为了限制权利要求的保护范围。
本发明实施例提供了一种PLSQL代码的JAVA转换方法、装置、电子设备及存储介质,能够在不需要人工介入的情况下顺利对等地将PLSQL代码翻译成JAVA代码。
第一方面,本发明实施例提供了一种PLSQL代码的JAVA转换方法,包括:获取待转换的PLSQL代码文本;对所述PLSQL代码文本进行识别处理,识别出所述PLSQL代码文本的文本类型,其中,所述文本类型包括如下之一:变量命名类型、基础数据类型、自定义结构类型、数组类型、package类型;根据所述文本类型对预设的多个语法树进行筛选处理,筛选出与所述文本类型对应的语法树,其中,不同所述文本类型所对应的所述语法树具有不同的处理节点;采用筛选得到的所述语法树中的所述处理节点对所述PLSQL代码文本进行翻译处理,得到文本信息;对所述文本信息进行转换处理,得到JAVA代码文本。
在一些实施例中,当所述PLSQL代码文本的所述文本类型为变量命名类型;所述采用筛选得到的所述语法树中的所述处理节点对所述PLSQL代码文本进行翻译处理,得到文本信息,包括:采用筛选得到的所述语法树中的所述处理节点对文本类型为变量命名类型的所述PLSQL代码文本进行翻译处理,得到变量名文本信息、数字类型文本信息和精度文本信息。
在一些实施例中,所述对所述文本信息进行转换处理,得到JAVA代码文本,包括如下之一:采用linux命名法对所述变量名文本信息进行转换处理,并去除所述变量名文本信息中的前缀,得到JAVA代码文本;采用驼峰命名法对所述变量名文本信息进行转换处理,并去除所述变量名文本信息中的前缀,得到JAVA代码文本。
在一些实施例中,还包括:在采用linux命名法对所述变量名文本信息进行转换处理的情况下,当所述变量名文本信息包括有若干个特殊字符时,将每个所述特殊字符转换为一个下划线字符;在采用驼峰命名法对所述变量名文本信息进行转换处理的情况下,当所述变量名文本信息包括有非连续排列的特殊字符时,删除所述特殊字符;当所述变量名文本信息包括有连续排列的多个特殊字符时,将多个所述特殊字符转换为一个下划线字符。
在一些实施例中,还包括:在对所述变量名文本信息进行转换处理的情况下,对所述变量名文本信息中的标识符进行识别,得到识别结果;当识别结果表征所述标识符为JAVA中的关键字信息,对所述标识符加上前缀。
在一些实施例中,当所述PLSQL代码文本的所述文本类型为基础数据类型;所述采用筛选得到的所述语法树中的所述处理节点对所述PLSQL代码文本进行翻译处理,得到文本信息,包括:采用筛选得到的所述语法树中的所述处理节点对文本类型为基础数据类型的所述PLSQL代码文本进行翻译处理,得到数字类型文本信息和精度文本信息。
在一些实施例中,当所述PLSQL代码文本的所述文本类型为自定义结构类型;所述采用筛选得到的所述语法树中的所述处理节点对所述PLSQL代码文本进行翻译处理,得到文本信息,包括:采用筛选得到的所述语法树中的所述处理节点对文本类型为自定义结构类型的所述PLSQL代码文本进行翻译处理,得到自定义类型文本信息、自定义名称文本信息、数字类型文本信息和精度文本信息。
在一些实施例中,所述对所述文本信息进行转换处理,得到JAVA代码文本,包括:对由所述自定义结构类型的所述PLSQL代码文本翻译得到的所述文本信息进行转换处理,转换为entity类的JAVA代码文本。
在一些实施例中,当所述PLSQL代码文本的所述文本类型为数组类型;所述采用筛选得到的所述语法树中的所述处理节点对所述PLSQL代码文本进行翻译处理,得到文本信息,包括:采用筛选得到的所述语法树中的所述处理节点对文本类型为数组类型的所述PLSQL代码文本进行翻译处理,得到数组名称文本信息、数组类型文本信息和精度文本信息。
在一些实施例中,所述对所述文本信息进行转换处理,得到JAVA代码文本,包括如下之一:对由所述数组类型为联合数组的所述PLSQL代码文本翻译得到的所述文本信息进行转换处理,转换为AssociativeCollection类的JAVA代码文本;对由所述数组类型为嵌套表的所述PLSQL代码文本翻译得到的所述文本信息进行转换处理,转换为NestedCollection类的JAVA代码文本;对由所述数组类型为变长数组的所述PLSQL代码文本翻译得到的所述文本信息进行转换处理,转换为Varray类的JAVA代码文本。
在一些实施例中,当所述PLSQL代码文本的所述文本类型为package类型;所述对所述文本信息进行转换处理,得到JAVA代码文本,包括:对由所述package类型的所述PLSQL代码文本翻译得到的所述文本信息进行转换处理,转换为service类的JAVA代码文本;当所述package类型的所述PLSQL代码文本包括有out参数,将所述out参数转换为OutParaTestFunc2Nd参数类中的对象pONum和对象pOStr。
第二方面,本发明实施例还提供了一种PLSQL代码的JAVA转换装置,包括:获取单元,用于获取待转换的PLSQL代码文本;识别单元,用于对所述PLSQL代码文本进行识别处理,识别出所述PLSQL代码文本的文本类型,其中,所述文本类型包括如下之一:变量命名类型、基础数据类型、自定义结构类型、数组类型、package类型;筛选单元,用于根据所述文本类型对预设的多个语法树进行筛选处理,筛选出与所述文本类型对应的语法树,其中,不同所述文本类型所对应的所述语法树具有不同的处理节点;翻译单元,用于采用筛选得到的所述语法树中的所述处理节点对所述PLSQL代码文本进行翻译处理,得到文本信息;转换单元,用于对所述文本信息进行转换处理,得到JAVA代码文本。
第三方面,本发明实施例还提供了一种电子设备,包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如上述第一方面所述的PLSQL代码的JAVA转换方法。
第四方面,本发明实施例还提供了一种计算机可读存储介质,存储有计算机可执行指令,所述计算机可执行指令用于执行如上述第一方面所述的PLSQL代码的JAVA转换方法。
本发明实施例包括:首先,获取待转换的PLSQL代码文本;然后,对所述PLSQL代码文本进行识别处理,识别出所述PLSQL代码文本的文本类型,其中,所述文本类型包括如下之一:变量命名类型、基础数据类型、自定义结构类型、数组类型、package类型;接着,根据所述文本类型对预设的多个语法树进行筛选处理,筛选出与所述文本类型对应的语法树,其中,不同所述文本类型所对应的所述语法树具有不同的处理节点;接着,采用筛选得到的所述语法树中的所述处理节点对所述PLSQL代码文本进行翻译处理,得到文本信息;最后,对所述文本信息进行转换处理,得到JAVA代码文本。根据本发明实施例的技术方案,本发明实施例能够细化各类PLSQL语法对应的语法树,通过语法树的特点精准地提取相应的信息,进而对等地转换成JAVA;其次,由于不同的PLSQL语法对应的语法树是不一样的,因此本发明实施例能够轻易且精确地识别出来,可扩展性强,新增加一个语法的支持,不会明显地增加代码复杂度;另外,由于语法树天然保存着上下文结构,因此本发明实施例可以很容易地从中提取上下文信息,相比于业内的字符串匹配方案,本本发明实施例的技术方案可以通过上下文信息进行一些代码结构调整等美化工作,使代码风格更加友好。
本发明的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点可通过在说明书、权利要求书以及附图中所特别指出的结构来实现和获得。
附图说明
附图用来提供对本发明技术方案的进一步理解,并且构成说明书的一部分,与本发明的实施例一起用于解释本发明的技术方案,并不构成对本发明技术方案的限制。
图1是本发明一个实施例提供的PLSQL代码的JAVA转换方法的流程图;
图2是本发明一个实施例提供的在PLSQL代码文本的文本类型为变量命名类型的情况下的PLSQL代码的JAVA转换方法的流程图;
图3是本发明另一个实施例提供的在PLSQL代码文本的文本类型为变量命名类型的情况下的PLSQL代码的JAVA转换方法的流程图;
图4是本发明另一个实施例提供的在PLSQL代码文本的文本类型为变量命名类型的情况下的PLSQL代码的JAVA转换方法的流程图;
图5是本发明另一个实施例提供的在PLSQL代码文本的文本类型为变量命名类型的情况下的PLSQL代码的JAVA转换方法的流程图;
图6是本发明另一个实施例提供的在PLSQL代码文本的文本类型为变量命名类型的情况下的PLSQL代码的JAVA转换方法的流程图;
图7是本发明另一个实施例提供的在PLSQL代码文本的文本类型为变量命名类型的情况下的PLSQL代码的JAVA转换方法的流程图;
图8是本发明一个实施例提供的在PLSQL代码文本的文本类型为变量命名类型的情况下的语法树的结构示意图;
图9是本发明一个实施例提供的在PLSQL代码文本的文本类型为基础数据类型的情况下的PLSQL代码的JAVA转换方法的流程图;
图10是本发明一个实施例提供的在PLSQL代码文本的文本类型为自定义结构类型的情况下的PLSQL代码的JAVA转换方法的流程图;
图11是本发明另一个实施例提供的在PLSQL代码文本的文本类型为自定义结构类型的情况下的PLSQL代码的JAVA转换方法的流程图;
图12是本发明一个实施例提供的在PLSQL代码文本的文本类型为数组类型的情况下的PLSQL代码的JAVA转换方法的流程图;
图13是本发明另一个实施例提供的在PLSQL代码文本的文本类型为数组类型的情况下的PLSQL代码的JAVA转换方法的流程图;
图14是本发明另一个实施例提供的在PLSQL代码文本的文本类型为数组类型的情况下的PLSQL代码的JAVA转换方法的流程图;
图15是本发明另一个实施例提供的在PLSQL代码文本的文本类型为数组类型的情况下的PLSQL代码的JAVA转换方法的流程图;
图16是本发明一个实施例提供的在PLSQL代码文本的文本类型为自定义结构类型的情况下的语法树的结构示意图;
图17是本发明一个实施例提供的在PLSQL代码文本的文本类型为数组类型的情况下的语法树的结构示意图;
图18是本发明一个实施例提供的在PLSQL代码文本的文本类型为package类型的情况下的PLSQL代码的JAVA转换方法的流程图;
图19是本发明一个实施例提供的在PLSQL代码文本的文本类型为package类型的情况下的语法树的结构示意图;
图20是本发明一个实施例提供的PLSQL代码的JAVA转换装置的结构示意图;
图21是本发明一个实施例提供的电子设备的硬件结构示意图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。
需要说明的是,虽然在装置示意图中进行了功能模块划分,在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于装置中的模块划分,或流程图中的顺序执行所示出或描述的步骤。说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。
除非另有定义,本文所使用的所有的技术和科学术语与属于本发明的技术领域的技术人员通常理解的含义相同。本文中所使用的术语只是为了描述本发明实施例的目的,不是旨在限制本发明。
首先,对本发明中涉及的若干名词进行解析:
人工智能(artificial intelligence,AI):是研究、开发用于模拟、延伸和扩展人的智能的理论、方法、技术及应用系统的一门新的技术科学;人工智能是计算机科学的一个分支,人工智能企图了解智能的实质,并生产出一种新的能以人类智能相似的方式做出反应的智能机器,该领域的研究包括机器人、语言识别、图像识别、自然语言处理和专家系统等。人工智能可以对人的意识、思维的信息过程的模拟。人工智能还是利用数字计算机或者数字计算机控制的机器模拟、延伸和扩展人的智能,感知环境、获取知识并使用知识获得最佳结果的理论、方法、技术及应用系统。
自然语言处理(natural language processing,NLP):NLP用计算机来处理、理解以及运用人类语言(如中文、英文等),NLP属于人工智能的一个分支,是计算机科学与语言学的交叉学科,又常被称为计算语言学。自然语言处理包括语法分析、语义分析、篇章理解等。自然语言处理常用于机器翻译、手写体和印刷体字符识别、语音识别及文语转换、信息检索、信息抽取与过滤、文本分类与聚类、舆情分析和观点挖掘等技术领域,它涉及与语言处理相关的数据挖掘、机器学习、知识获取、知识工程、人工智能研究和与语言计算相关的语言学研究等。
信息抽取(Information Extraction,NER):从自然语言文本中抽取指定类型的实体、关系、事件等事实信息,并形成结构化数据输出的文本处理技术。信息抽取是从文本数据中抽取特定信息的一种技术。文本数据是由一些具体的单位构成的,例如句子、段落、篇章,文本信息正是由一些小的具体的单位构成的,例如字、词、词组、句子、段落或是这些具体的单位的组合。抽取文本数据中的名词短语、人名、地名等都是文本信息抽取,当然,文本信息抽取技术所抽取的信息可以是各种类型的信息。
PLSQL(Procedural Language/SQL):是一种程序语言,叫做过程化SQL语言。PLSQL是Oracle数据库对SQL语句的扩展。在普通SQL语句的使用上增加了编程语言的特点,所以PLSQL把数据操作和查询语句组织在PLSQL代码的过程性单元中,通过逻辑判断、循环等操作实现复杂的功能或者计算。具体地,PLSQL属于第三代语言,它与C、C++、JAVA等语言一样关注于处理细节,可以用来实现比较复杂的业务逻辑。它允许SQL的数据操纵语言和查询语句包含在块结构和代码过程语言中,使PLSQL成为一个功能强大的事务处理语言。
JAVA:是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此JAVA语言具有功能强大和简单易用两个特征。JAVA语言作为静态面向对象编程语言的代表,极好地实现了面向对象理论,允许程序员以优雅的思维方式进行复杂的编程。JAVA具有简单性、面向对象、分布式、健壮性、安全性、平台独立与可移植性、多线程、动态性等特点。JAVA可以编写桌面应用程序、Web应用程序、分布式系统和嵌入式系统应用程序等。
语法树:是句子结构的图形表示,它代表了句子的推导结果,有利于理解句子语法结构的层次。简单说,语法树就是按照某一规则进行推导时所形成的树。
目前,关于PLSQL语言和JAVA语言,具体地,PLSQL是过程化SQL语言,JAVA是编译型面向对象语言,两者差别较大。由于涉及到变量定义、特殊字符、关键字、数组、自定义结构、表达式、控制流、函数、包等等的对等转换,另外还有一些PLSQL支持而JAVA不支持的语法,因此,难以采用机器对等地将PLSQL翻译成JAVA。现有技术中,一般是通过字符串匹配的方式识别出各种token,基于此再做一些简单的语言翻译。这种方案比较原始,适合做简单的逐句翻译,但处理复杂上下文关系的能力不足,再进一步要做目标代码的美化更是不可能;面对语法丰富的PLSQL,字符串匹配的方案要做到完全的语法对等转换很困难,甚至是不可能完成的任务,因此往往需要人工介入以保证将PLSQL翻译成JAVA的正确性。
基于此,本发明实施例提供了一种PLSQL代码的JAVA转换方法、PLSQL代码的JAVA转换装置、电子设备和计算机可读存储介质,能够细化各类PLSQL语法对应的语法树,通过语法树的特点精准地提取相应的信息,进而对等地转换成JAVA;其次,由于不同的PLSQL语法对应的语法树是不一样的,因此本发明实施例能够轻易且精确地识别出来,可扩展性强,新增加一个语法的支持,不会明显地增加代码复杂度;另外,由于语法树天然保存着上下文结构,因此本发明实施例可以很容易地从中提取上下文信息,相比于业内的字符串匹配方案,本本发明实施例的技术方案可以通过上下文信息进行一些代码结构调整等美化工作,使代码风格更加友好。
本发明实施例提供的PLSQL代码的JAVA转换方法、PLSQL代码的JAVA转换装置、电子设备及计算机可读存储介质,具体通过如下实施例进行说明,首先描述本发明实施例中的PLSQL代码的JAVA转换方法。
本发明实施例可以基于人工智能技术对相关的数据进行获取和处理。其中,人工智能(Artificial Intelligence,AI)是利用数字计算机或者数字计算机控制的机器模拟、延伸和扩展人的智能,感知环境、获取知识并使用知识获得最佳结果的理论、方法、技术及应用系统。
人工智能基础技术一般包括如传感器、专用人工智能芯片、云计算、分布式存储、大数据处理技术、操作/交互系统、机电一体化等技术。人工智能软件技术主要包括计算机视觉技术、机器人技术、生物识别技术、语音处理技术、自然语言处理技术以及机器学习/深度学习等几大方向。
本发明实施例提供的PLSQL代码的JAVA转换方法,涉及人工智能技术领域。本发明实施例提供的PLSQL代码的JAVA转换方法可应用于终端中,也可应用于服务器端中,还可以是运行于终端或服务器端中的软件。在一些实施例中,终端可以是智能手机、平板电脑、笔记本电脑、台式计算机等;服务器端可以配置成独立的物理服务器,也可以配置成多个物理服务器构成的服务器集群或者分布式系统,还可以配置成提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、CDN以及大数据和人工智能平台等基础云计算服务的云服务器;软件可以是实现PLSQL代码的JAVA转换方法的应用等,但并不局限于以上形式。
本发明可用于众多通用或专用的计算机系统环境或配置中。例如:个人计算机、服务器计算机、手持设备或便携式设备、平板型设备、多处理器系统、基于微处理器的系统、置顶盒、可编程的消费电子设备、网络PC、小型计算机、大型计算机、包括以上任何系统或设备的分布式计算环境等等。本发明可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本发明,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
如图1所示,图1是本发明一个实施例提供的PLSQL代码的JAVA转换方法的流程图;本发明实施例的PLSQL代码的JAVA转换方法可以包括但不限于包括步骤S110、步骤S120、步骤S130、步骤S140和步骤S150。
步骤S110、获取待转换的PLSQL代码文本;
步骤S120、对PLSQL代码文本进行识别处理,识别出PLSQL代码文本的文本类型,其中,文本类型包括如下之一:变量命名类型、基础数据类型、自定义结构类型、数组类型、package类型;
步骤S130、根据文本类型对预设的多个语法树进行筛选处理,筛选出与文本类型对应的语法树,其中,不同文本类型所对应的语法树具有不同的处理节点;
步骤S140、采用筛选得到的语法树中的处理节点对PLSQL代码文本进行翻译处理,得到文本信息;
步骤S150、对文本信息进行转换处理,得到JAVA代码文本。
具体地,当需要对待转换的PLSQL代码文本进行处理时,由于PLSQL代码文本的文本类型有多种,并且不同的文本类型所对应的后续处理方式存在不同,因此,本发明实施例会首先识别出待转换的PLSQL代码文本的文本类型;由于不同文本类型所对应的语法树具有不同的处理节点,因此,接着本发明实施例会根据文本类型筛选出对应的语法树;接着,本发明实施例再采用筛选得到的语法树中的处理节点对PLSQL代码文本进行翻译处理,得到文本信息;最后再对文本信息进行转换处理,得到JAVA代码文本。
根据本发明实施例的技术方案,本发明实施例能够细化各类PLSQL语法对应的语法树,通过语法树的特点精准地提取相应的信息,进而对等地转换成JAVA;其次,由于不同的PLSQL语法对应的语法树是不一样的,因此本发明实施例能够轻易且精确地识别出来,可扩展性强,新增加一个语法的支持,不会明显地增加代码复杂度;另外,由于语法树天然保存着上下文结构,因此本发明实施例可以很容易地从中提取上下文信息,相比于业内的字符串匹配方案,本本发明实施例的技术方案可以通过上下文信息进行一些代码结构调整等美化工作,使代码风格更加友好。
另外,如图2所示,图2是本发明一个实施例提供的在PLSQL代码文本的文本类型为变量命名类型的情况下的PLSQL代码的JAVA转换方法的流程图;当PLSQL代码文本的文本类型为变量命名类型时,上述步骤S140可以包括但不限于包括步骤S210。
步骤S210、采用筛选得到的语法树中的处理节点对文本类型为变量命名类型的PLSQL代码文本进行翻译处理,得到变量名文本信息、数字类型文本信息和精度文本信息。
具体地,在对变量命名类型的PLSQL代码文本进行翻译时,语法树会有多个处理节点,即多个叶子节点,其中,多个叶子节点中的节点信息分别为变量名文本信息、数字类型文本信息和精度文本信息。
另外,如图3和图4所示,图3和图4均是本发明另一个实施例提供的在PLSQL代码文本的文本类型为变量命名类型的情况下的PLSQL代码的JAVA转换方法的流程图;关于上述步骤S150,可以包括但不限于有图3中的步骤S220或者图4中的步骤S230。
步骤S220、采用linux命名法对变量名文本信息进行转换处理,并去除变量名文本信息中的前缀,得到JAVA代码文本。
步骤S230、采用驼峰命名法对变量名文本信息进行转换处理,并去除变量名文本信息中的前缀,得到JAVA代码文本。
具体地,在对变量名文本信息进行转换处理时,若采用的是linux命名法,则去除变量名文本信息中的前缀;若采用的是驼峰命名法,则去除变量名文本信息中的前缀。
示例性地,针对变量名文本信息(v_ret),可以选择linux命名法(v_ret)和驼峰命名法(vRet),并且可以配置去掉v_前缀(ret)。
需要说明的是,对于linux命名法,包括如下命名规则:1、变量名必须有一定的意义,并且意义准确。2、不建议大小写混用。3、在失去意义的情况下,尽量使用较短的变量名。4、不采用匈牙利命名法表示变量的类型。5、函数名应该以动词开头,因为函数是一组具有特定功能的语句块。6、尽量避免使用全局变量。
另外,需要说明的是,对于驼峰命名法(Camel-Case),又称骆驼式命名法,是电脑程式编写时的一套命名规则。正如它的名称CamelCase所表示的那样,是指混合使用大小写字母来构成变量和函数的名字。程序员们为了自己的代码能更容易的在同行之间交流,所以多采取统一的可读性比较好的命名方式。骆驼式命名法就是当变量名或函数名是由一个或多个单词连结在一起,而构成的唯一识别字时,第一个单词以小写字母开始;从第二个单词开始以后的每个单词的首字母都采用大写字母,例如:myFirstName、myLastName,这样的变量名看上去就像骆驼峰一样此起彼伏。
另外,如图5所示,图5是本发明另一个实施例提供的在PLSQL代码文本的文本类型为变量命名类型的情况下的PLSQL代码的JAVA转换方法的流程图;本发明实施例还包括但不限于有步骤S240。
步骤S240、在采用linux命名法对变量名文本信息进行转换处理的情况下,当变量名文本信息包括有若干个特殊字符时,将每个特殊字符转换为一个下划线字符。
示例性地,对于linux命名法,当变量名文本信息包括有持特殊字符$和#时,在转换时分别用短下划线字符_和长下划线字符__替换。因此,在使用linux命名法时,会将每个特殊字符都转换为一个对应的下划线字符。
另外,如图6所示,图6是本发明另一个实施例提供的在PLSQL代码文本的文本类型为变量命名类型的情况下的PLSQL代码的JAVA转换方法的流程图;本发明实施例还包括但不限于有步骤S250。
步骤S250、在采用驼峰命名法对变量名文本信息进行转换处理的情况下,当变量名文本信息包括有非连续排列的特殊字符时,删除特殊字符;当变量名文本信息包括有连续排列的多个特殊字符时,将多个特殊字符转换为一个下划线字符。
示例性地,对于驼峰命名法,由于驼峰命名法会去掉下划线字符,因此,当变量名文本信息包括有非连续排列的特殊字符$或#时,会直接删除特殊字符$或#;当变量名文本信息包括有连续排列的特殊字符$或#时,会将多个特殊字符转换为一个下划线字符,例如,当变量名文本信息包括有$$,那么经过驼峰命名法之后,会转换为一个下划线字符_。
另外,如图7所示,图7是本发明另一个实施例提供的在PLSQL代码文本的文本类型为变量命名类型的情况下的PLSQL代码的JAVA转换方法的流程图;本发明实施例还包括但不限于有步骤S260和步骤S270。
步骤S260、在对变量名文本信息进行转换处理的情况下,对变量名文本信息中的标识符进行识别,得到识别结果;
步骤S270、当识别结果表征标识符为JAVA中的关键字信息,对标识符加上前缀。
具体地,对于某些标识符,可能在PLSQL语言中是普通标识符,但是在JAVA语言中是关键字,因此,当变量名文本信息在转换时,需要先检查变量名文本信息中的标识符是否是JAVA关键字,如果是,则在标识符加一个前缀;如果不是,则直接转换。
基于上述图2至图7中的方法流程,本发明实施例提供了文本类型为变量命名类型时的具体方案,如下:
如图8所示,图8是本发明一个实施例提供的在PLSQL代码文本的文本类型为变量命名类型的情况下的语法树的结构示意图;图8是变量定义语句v_ret number(12)的简化语法树。程序可以很方便地从语法树中解析到变量名v_ret和数字类型number及精度12。
其中,图8中的变量名文本信息、数字类型文本信息和精度文本信息分别是v_ret、number和12。
本方案针对变量名(v_ret),提供了linux命名法(v_ret)和驼峰命名法(vRet),可以通过配置选择任意一种;同时可以配置去掉v_前缀(ret)。
PLSQL的变量名还支持特殊字符$和#,在转换时分别用_和__替换;注意驼峰命名法会去掉_,这里如果有两个连续的_,需要保留其中一个。
有些JAVA的关键字,在PLSQL中是普通标识符。因此变量名转换时需要先查检是否JAVA关键字,如果是,标识符加一个前缀。
另外,如图9所示,图9是本发明一个实施例提供的在PLSQL代码文本的文本类型为基础数据类型的情况下的PLSQL代码的JAVA转换方法的流程图;当PLSQL代码文本的文本类型为基础数据类型时,上述步骤S140可以包括但不限于包括步骤S310。
步骤S310、采用筛选得到的语法树中的处理节点对文本类型为基础数据类型的PLSQL代码文本进行翻译处理,得到数字类型文本信息和精度文本信息。
具体地,在对基础数据类型的PLSQL代码文本进行翻译时,语法树会有多个处理节点,即多个叶子节点,其中,多个叶子节点中的节点信息分别为数字类型文本信息和精度文本信息。
需要说明的是,基础数据类型的语法树结构可以如图8的type节点所示。
另外,如图10所示,图10是本发明一个实施例提供的在PLSQL代码文本的文本类型为自定义结构类型的情况下的PLSQL代码的JAVA转换方法的流程图;当PLSQL代码文本的文本类型为自定义结构类型时,上述步骤S140可以包括但不限于包括步骤S410。
步骤S410、采用筛选得到的语法树中的处理节点对文本类型为自定义结构类型的PLSQL代码文本进行翻译处理,得到自定义类型文本信息、自定义名称文本信息、数字类型文本信息和精度文本信息。
具体地,在对自定义结构类型的PLSQL代码文本进行翻译时,语法树会有多个处理节点,即多个叶子节点,其中,多个叶子节点中的节点信息分别为自定义类型文本信息、自定义名称文本信息、数字类型文本信息和精度文本信息。
另外,如图11所示,图11是本发明另一个实施例提供的在PLSQL代码文本的文本类型为自定义结构类型的情况下的PLSQL代码的JAVA转换方法的流程图;关于上述步骤S150,可以包括但不限于包括步骤S420。
步骤S420、对由自定义结构类型的PLSQL代码文本翻译得到的文本信息进行转换处理,转换为entity类的JAVA代码文本。
另外,如图12所示,图12是本发明一个实施例提供的在PLSQL代码文本的文本类型为数组类型的情况下的PLSQL代码的JAVA转换方法的流程图;当PLSQL代码文本的文本类型为数组类型时,上述步骤S140可以包括但不限于包括步骤S510。
步骤S510、采用筛选得到的语法树中的处理节点对文本类型为数组类型的PLSQL代码文本进行翻译处理,得到数组名称文本信息、数组类型文本信息和精度文本信息。
另外,如图13至图15所示,图13至图15均是本发明另一个实施例提供的在PLSQL代码文本的文本类型为变量命名类型的情况下的PLSQL代码的JAVA转换方法的流程图;关于上述步骤S150,可以包括但不限于有图13中的步骤S520或者图14中的步骤S530或者图15中的步骤S540。
步骤S520、对由数组类型为联合数组的PLSQL代码文本翻译得到的文本信息进行转换处理,转换为AssociativeCollection类的JAVA代码文本。
步骤S530、对由数组类型为嵌套表的PLSQL代码文本翻译得到的文本信息进行转换处理,转换为NestedCollection类的JAVA代码文本。
步骤S540、对由数组类型为变长数组的PLSQL代码文本翻译得到的文本信息进行转换处理,转换为Varray类的JAVA代码文本。
具体地,PLSQL的数组分成三种:联合数组,嵌套表,以及变长数组,分别对应三个自定义的JAVA模版类:AssociativeCollection(key类型,值类型),NestedCollection(值类型),以及Varray(值类型)。
基于上述图10至图15中的方法流程,本发明实施例提供了文本类型包括自定义结构类型和数组类型时的具体方案,如下:
示例性,自定义record和array的一个简单例子,如下:
Figure BDA0003585032150000141
对于上述例子,如图16和图17所示,图16是本发明一个实施例提供的在PLSQL代码文本的文本类型为自定义结构类型的情况下的语法树的结构示意图;
图17是本发明一个实施例提供的在PLSQL代码文本的文本类型为数组类型的情况下的语法树的结构示意图。
其中,语法树很精准地标出了自定义结构和数组的各项元素,遍历语法树时程序提取这些元素,并对等转换成JAVA。自定义的结构直接转成entity类。PLSQL的数组分成三种:联合数组,嵌套表,以及变长数组,分别对应三个自定义的JAVA模版类:AssociativeCollection(key类型,值类型),NestedCollection(值类型>,以及Varray(值类型>。
其中,图16中的自定义类型文本信息、自定义名称文本信息、数字类型文本信息和精度文本信息分别是rec_type、number_attr、number和12。图17中的数组名称文本信息、数组类型文本信息和精度文本信息分别是arr_type、varchar和400。
另外,如图18所示,图18是本发明一个实施例提供的在PLSQL代码文本的文本类型为package类型的情况下的PLSQL代码的JAVA转换方法的流程图;当PLSQL代码文本的文本类型为package类型时,上述步骤S150可以包括但不限于包括步骤S610和步骤S620。
步骤S610、对由package类型的PLSQL代码文本翻译得到的文本信息进行转换处理,转换为service类的JAVA代码文本;
步骤S620、当package类型的PLSQL代码文本包括有out参数,将out参数转换为OutParaTestFunc2Nd参数类中的对象pONum和对象pOStr。
基于上述图18中的方法流程,本发明实施例提供了文本类型包括package类型时的具体方案,如下:
package直接转成service类,package内的函数或存储过程则转成service类的成员函数,头部定义函数转public,否则转private。
PLSQL函数可以定义out参数,但是JAVA函数不支持这种机制,不能直接对等转换。本方案为函数的out参数创建一个参数类,每个out参数都是该参数类的成员对象,java函数用该参数类的实例做参数。
示例性地,包含out参数的PLSQL函数的例子如下:
Figure BDA0003585032150000151
由上可知,上述例子包含两个out参数p_o_num和p_o_str。
基于上述例子,图19是本发明一个实施例提供的在PLSQL代码文本的文本类型为package类型的情况下的语法树的结构示意图。收集函数的out参数,作为参数类OutParaTestFunc2Nd的成员对象pONum和pOStr。那么在函数里对这两个对象的修改,能直接影响到函数外。具体如下:
Figure BDA0003585032150000152
请参阅图20,本发明实施例还提供一种PLSQL代码的JAVA转换装置,可以实现上述PLSQL代码的JAVA转换方法,该PLSQL代码的JAVA转换装置100包括:
获取单元110,用于获取待转换的PLSQL代码文本;
识别单元120,用于对PLSQL代码文本进行识别处理,识别出PLSQL代码文本的文本类型,其中,文本类型包括如下之一:变量命名类型、基础数据类型、自定义结构类型、数组类型、package类型;
筛选单元130,用于根据文本类型对预设的多个语法树进行筛选处理,筛选出与文本类型对应的语法树,其中,不同文本类型所对应的语法树具有不同的处理节点;
翻译单元140,用于采用筛选得到的语法树中的处理节点对PLSQL代码文本进行翻译处理,得到文本信息;
转换单元150,用于对文本信息进行转换处理,得到JAVA代码文本。
该PLSQL代码的JAVA转换装置的具体实施方式与上述PLSQL代码的JAVA转换方法的具体实施例基本相同,在此不再赘述。
本发明实施例还提供了一种电子设备,电子设备包括:存储器、处理器、存储在存储器上并可在处理器上运行的程序以及用于实现处理器和存储器之间的连接通信的数据总线,程序被处理器执行时实现上述PLSQL代码的JAVA转换方法。该电子设备可以为包括平板电脑、车载电脑等任意智能终端。
请参阅图21,图21示意了另一实施例的电子设备的硬件结构,电子设备包括:
处理器210,可以采用通用的CPU(CentralProcessingUnit,中央处理器)、微处理器、应用专用集成电路(ApplicationSpecificIntegratedCircuit,ASIC)、或者一个或多个集成电路等方式实现,用于执行相关程序,以实现本发明实施例所提供的技术方案;
存储器220,可以采用只读存储器(ReadOnlyMemory,ROM)、静态存储设备、动态存储设备或者随机存取存储器(RandomAccessMemory,RAM)等形式实现。存储器220可以存储操作系统和其他应用程序,在通过软件或者固件来实现本说明书实施例所提供的技术方案时,相关的程序代码保存在存储器220中,并由处理器210来调用执行本发明实施例的PLSQL代码的JAVA转换方法;
输入/输出接口230,用于实现信息输入及输出;
通信接口240,用于实现本设备与其他设备的通信交互,可以通过有线方式(例如USB、网线等)实现通信,也可以通过无线方式(例如移动网络、WIFI、蓝牙等)实现通信;和
总线250,在设备的各个组件(例如处理器210、存储器220、输入/输出接口230和通信接口240)之间传输信息;
其中处理器210、存储器220、输入/输出接口230和通信接口240通过总线250实现彼此之间在设备内部的通信连接。
本发明实施例还提供了一种存储介质,存储介质为计算机可读存储介质,用于计算机可读存储,存储介质存储有一个或者多个程序,一个或者多个程序可被一个或者多个处理器执行,以实现上述PLSQL代码的JAVA转换方法。
存储器作为一种非暂态计算机可读存储介质,可用于存储非暂态软件程序以及非暂态性计算机可执行程序。此外,存储器可以包括高速随机存取存储器,还可以包括非暂态存储器,例如至少一个磁盘存储器件、闪存器件、或其他非暂态固态存储器件。在一些实施方式中,存储器可选包括相对于处理器远程设置的存储器,这些远程存储器可以通过网络连接至该处理器。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
本发明实施例描述的实施例是为了更加清楚的说明本发明实施例的技术方案,并不构成对于本发明实施例提供的技术方案的限定,本领域技术人员可知,随着技术的演变和新应用场景的出现,本发明实施例提供的技术方案对于类似的技术问题,同样适用。
本领域技术人员可以理解的是,图1-19中示出的技术方案并不构成对本发明实施例的限定,可以包括比图示更多或更少的步骤,或者组合某些步骤,或者不同的步骤。
以上所描述的装置实施例仅仅是示意性的,其中作为分离部件说明的单元可以是或者也可以不是物理上分开的,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。
本领域普通技术人员可以理解,上文中所公开方法中的全部或某些步骤、系统、设备中的功能模块/单元可以被实施为软件、固件、硬件及其适当的组合。
本发明的说明书及上述附图中的术语“第一”、“第二”、“第三”、“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
应当理解,在本发明中,“至少一个(项)”是指一个或者多个,“多个”是指两个或两个以上。“和/或”,用于描述关联对象的关联关系,表示可以存在三种关系,例如,“A和/或B”可以表示:只存在A,只存在B以及同时存在A和B三种情况,其中A,B可以是单数或者复数。字符“/”一般表示前后关联对象是一种“或”的关系。“以下至少一项(个)”或其类似表达,是指这些项中的任意组合,包括单项(个)或复数项(个)的任意组合。例如,a,b或c中的至少一项(个),可以表示:a,b,c,“a和b”,“a和c”,“b和c”,或“a和b和c”,其中a,b,c可以是单个,也可以是多个。
在本发明所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,上述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
上述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括多指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例的方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,简称ROM)、随机存取存储器(Random Access Memory,简称RAM)、磁碟或者光盘等各种可以存储程序的介质。
以上参照附图说明了本发明实施例的优选实施例,并非因此局限本发明实施例的权利范围。本领域技术人员不脱离本发明实施例的范围和实质内所作的任何修改、等同替换和改进,均应在本发明实施例的权利范围之内。

Claims (14)

1.一种PLSQL代码的JAVA转换方法,其特征在于,包括:
获取待转换的PLSQL代码文本;
对所述PLSQL代码文本进行识别处理,识别出所述PLSQL代码文本的文本类型,其中,所述文本类型包括如下之一:变量命名类型、基础数据类型、自定义结构类型、数组类型、package类型;
根据所述文本类型对预设的多个语法树进行筛选处理,筛选出与所述文本类型对应的语法树,其中,不同所述文本类型所对应的所述语法树具有不同的处理节点;
采用筛选得到的所述语法树中的所述处理节点对所述PLSQL代码文本进行翻译处理,得到文本信息;
对所述文本信息进行转换处理,得到JAVA代码文本。
2.根据权利要求1所述的PLSQL代码的JAVA转换方法,其特征在于,当所述PLSQL代码文本的所述文本类型为变量命名类型;所述采用筛选得到的所述语法树中的所述处理节点对所述PLSQL代码文本进行翻译处理,得到文本信息,包括:
采用筛选得到的所述语法树中的所述处理节点对文本类型为变量命名类型的所述PLSQL代码文本进行翻译处理,得到变量名文本信息、数字类型文本信息和精度文本信息。
3.根据权利要求2所述的PLSQL代码的JAVA转换方法,其特征在于,所述对所述文本信息进行转换处理,得到JAVA代码文本,包括如下之一:
采用linux命名法对所述变量名文本信息进行转换处理,并去除所述变量名文本信息中的前缀,得到JAVA代码文本;
采用驼峰命名法对所述变量名文本信息进行转换处理,并去除所述变量名文本信息中的前缀,得到JAVA代码文本。
4.根据权利要求3所述的PLSQL代码的JAVA转换方法,其特征在于,还包括:
在采用linux命名法对所述变量名文本信息进行转换处理的情况下,当所述变量名文本信息包括有若干个特殊字符时,将每个所述特殊字符转换为一个下划线字符;
在采用驼峰命名法对所述变量名文本信息进行转换处理的情况下,当所述变量名文本信息包括有非连续排列的特殊字符时,删除所述特殊字符;当所述变量名文本信息包括有连续排列的多个特殊字符时,将多个所述特殊字符转换为一个下划线字符。
5.根据权利要求3或4所述的PLSQL代码的JAVA转换方法,其特征在于,还包括:
在对所述变量名文本信息进行转换处理的情况下,对所述变量名文本信息中的标识符进行识别,得到识别结果;
当识别结果表征所述标识符为JAVA中的关键字信息,对所述标识符加上前缀。
6.根据权利要求1所述的PLSQL代码的JAVA转换方法,其特征在于,当所述PLSQL代码文本的所述文本类型为基础数据类型;所述采用筛选得到的所述语法树中的所述处理节点对所述PLSQL代码文本进行翻译处理,得到文本信息,包括:
采用筛选得到的所述语法树中的所述处理节点对文本类型为基础数据类型的所述PLSQL代码文本进行翻译处理,得到数字类型文本信息和精度文本信息。
7.根据权利要求1所述的PLSQL代码的JAVA转换方法,其特征在于,当所述PLSQL代码文本的所述文本类型为自定义结构类型;所述采用筛选得到的所述语法树中的所述处理节点对所述PLSQL代码文本进行翻译处理,得到文本信息,包括:
采用筛选得到的所述语法树中的所述处理节点对文本类型为自定义结构类型的所述PLSQL代码文本进行翻译处理,得到自定义类型文本信息、自定义名称文本信息、数字类型文本信息和精度文本信息。
8.根据权利要求7所述的PLSQL代码的JAVA转换方法,其特征在于,所述对所述文本信息进行转换处理,得到JAVA代码文本,包括:
对由所述自定义结构类型的所述PLSQL代码文本翻译得到的所述文本信息进行转换处理,转换为entity类的JAVA代码文本。
9.根据权利要求1所述的PLSQL代码的JAVA转换方法,其特征在于,当所述PLSQL代码文本的所述文本类型为数组类型;所述采用筛选得到的所述语法树中的所述处理节点对所述PLSQL代码文本进行翻译处理,得到文本信息,包括:
采用筛选得到的所述语法树中的所述处理节点对文本类型为数组类型的所述PLSQL代码文本进行翻译处理,得到数组名称文本信息、数组类型文本信息和精度文本信息。
10.根据权利要求9所述的PLSQL代码的JAVA转换方法,其特征在于,所述对所述文本信息进行转换处理,得到JAVA代码文本,包括如下之一:
对由所述数组类型为联合数组的所述PLSQL代码文本翻译得到的所述文本信息进行转换处理,转换为AssociativeCol lection类的JAVA代码文本;
对由所述数组类型为嵌套表的所述PLSQL代码文本翻译得到的所述文本信息进行转换处理,转换为NestedCol lection类的JAVA代码文本;
对由所述数组类型为变长数组的所述PLSQL代码文本翻译得到的所述文本信息进行转换处理,转换为Varray类的JAVA代码文本。
11.根据权利要求1所述的PLSQL代码的JAVA转换方法,其特征在于,当所述PLSQL代码文本的所述文本类型为package类型;所述对所述文本信息进行转换处理,得到JAVA代码文本,包括:
对由所述package类型的所述PLSQL代码文本翻译得到的所述文本信息进行转换处理,转换为service类的JAVA代码文本;
当所述package类型的所述PLSQL代码文本包括有out参数,将所述out参数转换为OutParaTestFunc2Nd参数类中的对象pONum和对象pOStr。
12.一种PLSQL代码的JAVA转换装置,其特征在于,包括:
获取单元,用于获取待转换的PLSQL代码文本;
识别单元,用于对所述PLSQL代码文本进行识别处理,识别出所述PLSQL代码文本的文本类型,其中,所述文本类型包括如下之一:变量命名类型、基础数据类型、自定义结构类型、数组类型、package类型;
筛选单元,用于根据所述文本类型对预设的多个语法树进行筛选处理,筛选出与所述文本类型对应的语法树,其中,不同所述文本类型所对应的所述语法树具有不同的处理节点;
翻译单元,用于采用筛选得到的所述语法树中的所述处理节点对所述PLSQL代码文本进行翻译处理,得到文本信息;
转换单元,用于对所述文本信息进行转换处理,得到JAVA代码文本。
13.一种电子设备,其特征在于,包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如权利要求1至11中任意一项所述的PLSQL代码的JAVA转换方法。
14.一种计算机可读存储介质,其特征在于,存储有计算机可执行指令,所述计算机可执行指令用于执行如权利要求1至11中任意一项所述的PLSQL代码的JAVA转换方法。
CN202210360621.5A 2022-04-07 2022-04-07 Plsql代码的java转换方法、装置、电子设备及存储介质 Pending CN114791812A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210360621.5A CN114791812A (zh) 2022-04-07 2022-04-07 Plsql代码的java转换方法、装置、电子设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210360621.5A CN114791812A (zh) 2022-04-07 2022-04-07 Plsql代码的java转换方法、装置、电子设备及存储介质

Publications (1)

Publication Number Publication Date
CN114791812A true CN114791812A (zh) 2022-07-26

Family

ID=82461385

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210360621.5A Pending CN114791812A (zh) 2022-04-07 2022-04-07 Plsql代码的java转换方法、装置、电子设备及存储介质

Country Status (1)

Country Link
CN (1) CN114791812A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117075911A (zh) * 2023-10-13 2023-11-17 北京人大金仓信息技术股份有限公司 由pl语言到c语言的变量代码转换方法、存储介质和设备

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117075911A (zh) * 2023-10-13 2023-11-17 北京人大金仓信息技术股份有限公司 由pl语言到c语言的变量代码转换方法、存储介质和设备
CN117075911B (zh) * 2023-10-13 2024-01-12 北京人大金仓信息技术股份有限公司 由pl语言到c语言的变量代码转换方法、存储介质和设备

Similar Documents

Publication Publication Date Title
CN107291783B (zh) 一种语义匹配方法及智能设备
KR102491172B1 (ko) 자연어 질의응답 시스템 및 그 학습 방법
CN109885698A (zh) 一种知识图谱构建方法及装置、电子设备
CN111176650B (zh) 解析器生成方法、检索方法、服务器及存储介质
WO2023108991A1 (zh) 模型的训练方法、知识分类方法、装置、设备、介质
CN112580331A (zh) 政策文本的知识图谱构建方法及系统
CN108399157A (zh) 实体与属性关系的动态抽取方法、服务器及可读存储介质
CN115497477A (zh) 语音交互方法、语音交互装置、电子设备、存储介质
CN114791812A (zh) Plsql代码的java转换方法、装置、电子设备及存储介质
CN116701604A (zh) 问答语料库的构建方法和装置、问答方法、设备及介质
CN117473054A (zh) 基于知识图谱的通用智能问答方法及装置
CN116304231A (zh) 基于语法解析树的查询语句生成方法和装置、设备、介质
CN114398903B (zh) 意图识别方法、装置、电子设备及存储介质
CN114611529B (zh) 意图识别方法和装置、电子设备及存储介质
CN116432705A (zh) 文本生成模型构建、文本生成方法和装置、设备及介质
CN115145980A (zh) 对话回复生成方法和装置、电子设备及存储介质
CN115080743A (zh) 数据处理方法、数据处理装置、电子设备及存储介质
CN114816422A (zh) 转换plsql代码的方法、装置、电子设备及存储介质
CN115221288A (zh) 语义解析方法、语义解析装置、电子设备及存储介质
CN114996458A (zh) 文本处理方法和装置、设备、介质
CN114625658A (zh) App稳定性测试方法、装置、设备和计算机可读存储介质
CN114297353A (zh) 数据处理方法、装置、存储介质及设备
CN114897038B (zh) 目标词语的检测方法、装置、电子设备及存储介质
CN115034318B (zh) 标题判别模型的生成方法和装置、设备、介质
CN117648416A (zh) 一种体检结果处理方法和装置、设备及介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination