编译报错定位方法、装置、设备、存储介质和程序产品制造方法及图纸

技术编号:39004685 阅读:10 留言:0更新日期:2023-10-07 10:36
本公开提供了一种编译报错定位方法,涉及数据库技术领域,可以应用于金融技术领域。所述方法包括:响应于存储过程代码编译指令,对目标存储过程代码进行编译;当确定产生编译报错信息后,根据编译报错信息和存储过程数注释存储过程代码;对注释后的存储过程代码进行二次编译,以缩小存储过程代码的注释范围;以及重复注释编译操作直至确定存储过程报错语句。本公开还提供了一种编译报错定位装置、设备、存储介质和程序产品。存储介质和程序产品。存储介质和程序产品。

【技术实现步骤摘要】
编译报错定位方法、装置、设备、存储介质和程序产品


[0001]本公开涉及数据库
,具体地涉及一种数据库迁移
,更具体地涉及一种编译报错定位方法、装置、设备、存储介质和程序产品。

技术介绍

[0002]在信创转型中,传统数据库中有大量代码为存储过程代码,通过工具将传统数据库的存储过程通过工具和人工改写,迁移至国产新型数据库编译调试和运行,但国产新型数据库因为发展周期等问题,提供的存储过程编译功能,报错信息不够准确,如一个存储过程的包中含有的数十个存储过程,有上万行代码,一起在数据库中编译,但报错可能未提供行号,提示的关键字,可能在包中可以搜索到几百个,无法明确定位到具体位置。往往需要靠有经验的技术人员人工排查,用半天到一天来分析定位一个问题,而一个存储过程包在迁移过程中可能有数处编译错误,大大增加了信创转型存储过程开发人员工作量,影响工程周期。
[0003]需要说明的是,在上述
技术介绍
部分公开的信息仅用于加强对本公开的背景的理解,因此可以包括不构成对本领域普通技术人员已知的现有技术的信息。

技术实现思路

[0004]鉴于上述问题,本公开提供了一种提高数据库迁移效率的编译报错定位方法、装置、设备、存储介质和程序产品。
[0005]根据本公开的第一个方面,提供了一种编译报错定位方法,所述方法包括:
[0006]响应于存储过程代码编译指令,对目标存储过程代码进行编译;
[0007]当确定产生编译报错信息后,根据编译报错信息和存储过程数注释存储过程代码;
[0008]对注释后的存储过程代码进行二次编译,以缩小存储过程代码的注释范围;以及
[0009]重复注释编译操作直至确定存储过程报错语句。
[0010]根据本公开的实施例,还包括:
[0011]将所述存储过程报错语句注释后的代码重新编译直至存储过程无报错信息;
[0012]将报错的存储过程名、报错语句起始行号、报错语句内容、报错关键字和编译时间戳记录至错误信息表;以及
[0013]输出所述错误信息表。
[0014]根据本公开的实施例,所述根据编译报错信息和存储过程数注释存储过程代码包括:
[0015]根据编译报错信息确定报错语句行号和所述报错语句行号前的存储过程总数;以及
[0016]按照折半原则对所述存储过程总数的一半存储过程代码进行注释。
[0017]根据本公开的实施例,所述对注释后的存储过程代码进行二次编译,以缩小存储
过程代码的注释范围包括:
[0018]对注释后的存储过程代码进行二次编译;
[0019]如果编译成功,则确定存储过程报错语句在被注释的半数存储过程代码中;以及
[0020]如果编译报错,则确定存储过程报错语句在未被注释的存储过程代码中。
[0021]根据本公开的实施例,在对目标存储过程代码进行编译之前,还包括:
[0022]根据源数据库的存储过程包生成目标存储过程代码。
[0023]根据本公开的实施例,所述根据源数据库的存储过程包生成存储过程代码包括:
[0024]获取源数据库存储过程的代码和定义;
[0025]对所述源数据库存储过程的代码和定义进行转换;以及
[0026]对转换后的代码添加行号以生成目标存储过程代码。
[0027]本公开的第二方面提供了一种编译报错定位装置,所述装置包括:
[0028]第一编译模块,响应于存储过程代码编译指令,对目标存储过程代码进行编译;
[0029]注释模块,用于当确定产生编译报错信息后,根据编译报错信息和存储过程数注释存储过程代码;
[0030]第二编译模块,用于对注释后的存储过程代码进行二次编译,以缩小存储过程代码的注释范围;以及
[0031]第一报错定位模块,用于重复注释编译操作直至确定存储过程报错语句。
[0032]根据本公开的实施例,所述装置还包括:第二报错定位模块、记录模块和输出模块。
[0033]第二报错定位模块,用于将所述存储过程报错语句注释后的代码重新编译直至存储过程无报错信息;
[0034]记录模块,用于将报错的存储过程名、报错语句起始行号、报错语句内容、报错关键字和编译时间戳记录至错误信息表;以及
[0035]输出模块,用于所述错误信息表。
[0036]根据本公开的实施例,所述注释模块包括:第一确定子模块和注释子模块。
[0037]第一确定子模块,用于根据编译报错信息确定报错语句行号和所述报错语句行号前的存储过程总数;以及
[0038]注释子模块,用于按照折半原则对所述存储过程总数的一半存储过程代码进行注释。
[0039]根据本公开的实施例,第二编译模块包括:二次编译子模块、第二确定子模块和第三确定子模块。
[0040]二次编译子模块,用于对注释后的存储过程代码进行二次编译;
[0041]第二确定子模块,用于如果编译成功,则确定存储过程报错语句在被注释的半数存储过程代码中;以及
[0042]第三确定子模块,用于如果编译报错,则确定存储过程报错语句在未被注释的存储过程代码中。
[0043]根据本公开的实施例,在第一编译模块对目标存储过程代码进行编译之前,还包括:目标存储过程代码生成模块。
[0044]目标存储过程代码生成模块,用于根据源数据库的存储过程包生成目标存储过程
代码。
[0045]根据本公开的实施例,所述目标存储过程代码生成模块包括:获取子模块、转换子模块和生成子模块。
[0046]获取子模块,用于获取源数据库存储过程的代码和定义;
[0047]转换子模块,用于对所述源数据库存储过程的代码和定义进行转换;以及
[0048]生成子模块,用于对转换后的代码添加行号以生成目标存储过程代码。
[0049]本公开的第三方面提供了一种电子设备,包括:一个或多个处理器;存储器,用于存储一个或多个程序,其中,当所述一个或多个程序被所述一个或多个处理器执行时,使得一个或多个处理器执行上述编译报错定位方法。
[0050]本公开的第四方面还提供了一种计算机可读存储介质,其上存储有可执行指令,该指令被处理器执行时使处理器执行上述编译报错定位方法。
[0051]本公开的第五方面还提供了一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现上述编译报错定位方法。
[0052]通过本公开的实施例提供的一种编译报错定位方法,当接收到存储过程代码的编译指令后,对目标存储过程代码进行编译;当确定产生编译报错信息后,根据编译报错信息和存储过程数注释存储过程代码;对注释后的存储过程代码进行二次编译,以缩小存储过程代码的注释范围;以及重复注释编译操作直至确定存储过程报错语句。相较于相关技术中编译报错定位方法,本公开实施例提供的编译报错定位方法能够快速准确定位报错的存储过程名和报错语句级行号,提高开发效率。
附图说明本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种编译报错定位方法,其特征在于,所述方法包括:响应于存储过程代码编译指令,对目标存储过程代码进行编译;当确定产生编译报错信息后,根据编译报错信息和存储过程数注释存储过程代码;对注释后的存储过程代码进行二次编译,以缩小存储过程代码的注释范围;以及重复注释编译操作直至确定存储过程报错语句。2.根据权利要求1所述的方法,其特征在于,还包括:将所述存储过程报错语句注释后的代码重新编译直至存储过程无报错信息;将报错的存储过程名、报错语句起始行号、报错语句内容、报错关键字和编译时间戳记录至错误信息表;以及输出所述错误信息表。3.根据权利要求1所述的方法,其特征在于,所述根据编译报错信息和存储过程数注释存储过程代码包括:根据编译报错信息确定报错语句行号和所述报错语句行号前的存储过程总数;以及按照折半原则对所述存储过程总数的一半存储过程代码进行注释。4.根据权利要求3所述的方法,其特征在于,所述对注释后的存储过程代码进行二次编译,以缩小存储过程代码的注释范围包括:对注释后的存储过程代码进行二次编译;如果编译成功,则确定存储过程报错语句在被注释的半数存储过程代码中;以及如果编译报错,则确定存储过程报错语句在未被注释的存储过程代码中。5.根据权利要求1至4中任一项所述的方法,其特征在于,在对目标存储过程代码进行编译之前,还...

【专利技术属性】
技术研发人员:李奇伟黄坚梁昊然何思阳
申请(专利权)人:中国工商银行股份有限公司
类型:发明
国别省市:

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

1