【技术实现步骤摘要】
一种将Transact-SQL程序转换为Java程序的方法
本专利技术属于计算机软件中的程序转换领域,具体涉及一种将Transact-SQL程序转换为Java程序的方法。
技术介绍
随着程序语言的发展,新型的程序语言被不断设计出来。相比于传统程序语言,新型程序语言往往支持更多的高级语言特性,表达能力更强,开发起来更快捷,更适应技术发展潮流。因此,企业中的很多历史悠久的业务系统面临着从传统编程语言向新型编程语言转换的需求。SQL(StructuredQueryLanguage),即结构化查询语言,是关系型数据库的标准语言,已被众多数据库管理系统所采用。Transact-SQL(简称T-SQL)是MicrosoftSQLSERVER对SQL的扩展,提供了类似C、Basic和Pascal中的过程式语句,如变量、控制流、子程序等,使得SQL不再局限于标准的数据库操作,成为一种功能强大的结构化语言,可以用来完成业务逻辑编写。Java是一门面向对象编程语言,不仅吸收了C++的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。Java允许程序员以优雅的思维方式进行复杂的编程,是目前主流的编程语言之一,并且是编写企业应用程序的首选。与一般的程序转换场景不同,T-SQL是一种特殊的编程语言,它包括SQL语句和过程式语句两部分,而其中的SQL语句必须由数据库来执行,因此,转换后的Java程序中既有Java代码(通常由T-SQL中的过程式语句转换而来),也有SQ ...
【技术保护点】
1.一种将Transact-SQL程序转换为Java程序的方法,其特征在于,包括如下步骤:/n获取Transact-SQL代码;/n遍历类型定义代码,获取全局类型信息;/n遍历业务逻辑代码,获取签名信息以及依赖关系;/n确定业务逻辑代码的转换顺序;/n依次遍历业务逻辑代码,按照转换规则,执行转换过程。/n
【技术特征摘要】
1.一种将Transact-SQL程序转换为Java程序的方法,其特征在于,包括如下步骤:
获取Transact-SQL代码;
遍历类型定义代码,获取全局类型信息;
遍历业务逻辑代码,获取签名信息以及依赖关系;
确定业务逻辑代码的转换顺序;
依次遍历业务逻辑代码,按照转换规则,执行转换过程。
2.根据权利要求1所述的将Transact-SQL程序转换为Java程序的方法,其特征在于,所获取的Transact-SQL代码包括数据库表定义代码、用户定义类型代码、函数定义代码、存储过程定义代码。
3.根据权利要求1所述的将Transact-SQL程序转换为Java程序的方法,其特征在于,所述的遍历类型定义代码,获取全局类型信息,包括如下步骤:
构建T-SQL类型定义代码的抽象语法树AST;
遍历抽象语法树,访问特定节点类型,提取全局类型信息。
4.根据权利要求1所述的将Transact-SQL程序转换为Java程序的方法,其特征在于,所述的遍历业务逻辑代码,获取签名信息以及依赖关系,包括如下步骤:
构建T-SQL业务逻辑代码的抽象语法树;
遍历抽象语法树,访问特定节点类型,提取签名信息以及依赖信息;
所述的签名信息包括函数名称/存储过程名称、输入参数的信息和返回值的信息,输入参数的数量和返回值的数量都是不限的;输入参数的信息包括名称、类型、顺序、默认值;返回值的信息包括名称、类型、顺序;每个输入参数或返回值的类型是内置类型、数据库表和自定义类型中的任意一种具体类型;
所述的依赖信息主要体现在业务逻辑代码之间的调用关系。
5.根据权利要求4所述的将Transact-SQL程序转换为Java程序的方法,其特征在于,所述的业务逻辑代码的转换顺序主要考虑依赖关系,被依赖方要在依赖方之前进行转换,并基于依赖关系,通过拓扑排序确定转换顺序。
6.根据权利要求5所述的将Transact-SQL程序转换为Java程序的方法,其特征在于,完成转换后,每个T-SQL自定义函数/存储过程都转换为独立的Java类,自定义函数/存储过程中的可执行代码转换为Java类中的一个静态方法的方法体。
7.根据权利要求4所述的将Transact-SQL程序转换为Java程序的方法,其特征在于,转换过程包括方法签名生成和方法体生成两部分,所述的方法签名基于提取的签名信息来生成,包括方法名、输入参数名称、输入参数类型和返回值类型;方法体的生成包括如下步骤:
基于T-SQL业务逻辑代码构建抽象语法树;
遍历T-SQL抽象语法树,根据节点类型及其相邻节点类型,按照T-SQL语法的转换规则转换为Java抽象语法树;
根据Java抽象语法树生成Java业务逻辑代码。
8.根据权利要求7所述的将Transact-SQL程序转换为Java程序的方法,其...
【专利技术属性】
技术研发人员:尹建伟,智晨,邓水光,李莹,
申请(专利权)人:浙江大学,
类型:发明
国别省市:浙江;33
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。