函数动态创建方法、装置及电子设备.pdf

上传人:狗** 文档编号:11704068 上传时间:2021-10-15 格式:PDF 页数:13 大小:596.79KB
收藏 版权申诉 举报 下载
函数动态创建方法、装置及电子设备.pdf_第1页
第1页 / 共13页
函数动态创建方法、装置及电子设备.pdf_第2页
第2页 / 共13页
函数动态创建方法、装置及电子设备.pdf_第3页
第3页 / 共13页
文档描述:

《函数动态创建方法、装置及电子设备.pdf》由会员分享,可在线阅读,更多相关《函数动态创建方法、装置及电子设备.pdf(13页完成版)》请在专利查询网上搜索。

1、(19)中华人民共和国国家知识产权局 (12)发明专利申请 (10)申请公布号 (43)申请公布日 (21)申请号 201910300273.0 (22)申请日 2019.04.15 (71)申请人 成都四方伟业软件股份有限公司 地址 610000 四川省成都市高新区科园三 路4号1栋2层 (72)发明人 张永飞易祖建杨尧王诗强 (74)专利代理机构 北京超凡宏宇专利代理事务 所(特殊普通合伙) 11463 代理人 杨奇松 (51)Int.Cl. G06F 8/30(2018.01) G06F 8/41(2018.01) G06F 16/242(2019.01) G06F 16/28(2019。

2、.01) (54)发明名称 函数动态创建方法、 装置及电子设备 (57)摘要 本申请实施例提供一种函数动态创建方法、 装置及电子设备, 在获取的存储过程的SQL语句 中包含函数创建语句及存储过程创建语句时, 分 别对函数创建语句及存储过程创建语句进行解 析生成对应的第一java文件及第二java文件, 再 分别对其进行编译得到第一可执行文件和第二 可执行文件, 最后将第一可执行文件和第二可执 行文件加载至内存中。 如此, 可在创建存储过程 中动态创建自定义函数, 便于后续存储过程对自 定义函数的调用, 并且基于java代码的通用性, java类的自定义函数及存储过程可支持跨平台 的使用。 权利。

3、要求书2页 说明书7页 附图3页 CN 109992259 A 2019.07.09 CN 109992259 A 1.一种函数动态创建方法, 其特征在于, 所述方法包括: 获取存储过程的SQL语句, 所述SQL语句包括函数创建语句及存储过程创建语句; 对所述函数创建语句及所述存储过程创建语句进行解析, 获得所述函数创建语句对应 的第一java文件以及所述存储过程创建语句对应的第二java文件; 编译所述第一java文件生成第一可执行文件, 并编译所述第二java文件生成第二可执 行文件; 将所述第一可执行文件及所述第二可执行文件加载至内存中。 2.根据权利要求1所述的函数动态创建方法, 其特。

4、征在于, 所述方法还包括: 将所述函数创建语句与所述第一可执行文件进行关联并保存, 将所述存储过程创建语 句与所述第二可执行文件进行关联并保存。 3.根据权利要求1所述的函数动态创建方法, 其特征在于, 所述对所述函数创建语句及 所述存储过程创建语句进行解析, 获得所述函数创建语句对应的第一java文件以及所述存 储过程创建语句对应的第二java文件的步骤, 包括: 根据第一预设文法规则, 利用文法解析工具对所述函数创建语句进行解析, 获得所述 函数创建语句对应的第一java文件; 基于第二预设文法规则, 利用所述文法解析工具对所述存储过程创建语句进行解析, 获得所述存储过程创建语句对应的第二。

5、java文件。 4.根据权利要求3所述的函数动态创建方法, 其特征在于, 所述根据第一预设文法规 则, 利用文法解析工具对所述函数创建语句进行解析, 获得所述函数创建语句对应的第一 java文件的步骤, 包括: 根据第一预设文法规则, 利用文法解析工具对所述函数创建语句的语法进行解析, 生 成语法树, 所述语法树包括多个节点; 读取所述语法树中包含的各个节点的节点信息, 根据各个节点的节点信息获得所述语 法树的属性信息; 根据所述属性信息将所述函数创建语句转换为第一java文件。 5.根据权利要求4所述的函数动态创建方法, 其特征在于, 所述属性信息包括函数名 称、 参数列表及运算表达式, 所。

6、述根据所述属性信息将所述函数创建语句转换为第一java 文件的步骤, 包括: 将所述函数名称转换为java类文件名称; 根据所述参数列表生成java类的代码模块; 将所述运算表达式转换为java类表达式; 将生成的所述代码模块及java类表达式写入至预先生成的java文件, 并利用所述java 类文件名称命名所述java文件, 得到所述函数创建语句对应的第一java文件。 6.根据权利要求4所述的函数动态创建方法, 其特征在于, 所述第一预设文法规则包括 词法解析规则以及语法解析规则, 所述根据第一预设文法规则, 利用文法解析工具对所述 函数创建语句的语法进行解析, 生成语法树的步骤, 包括:。

7、 利用所述词法解析规则及文法解析工具对所述函数创建语句进行词法解析, 获得所述 函数创建语句的词法解析结果; 基于所述语法解析规则及所述文法解析工具对所述词法解析结果进行解析, 获得所述 权利要求书 1/2 页 2 CN 109992259 A 2 函数创建语句对应的语法树。 7.根据权利要求1所述的函数动态创建方法, 其特征在于, 所述将所述第一可执行文件 及所述第二可执行文件加载至内存中的步骤, 包括: 获取所述第一可执行文件中的函数运行实例, 将所述函数运行实例注册至内存中预先 配置的函数支持列表中; 获取所述第二可执行文件中的存储过程运行实例, 将所述存储过程运行实例注册至内 存中预先。

8、配置的存储过程列表中。 8.一种函数动态创建装置, 其特征在于, 所述装置包括: 获取模块, 用于获取存储过程的SQL语句, 所述SQL语句包括函数创建语句及存储过程 创建语句; 解析模块, 用于对所述函数创建语句及所述存储过程创建语句进行解析, 获得所述函 数创建语句对应的第一java文件以及所述存储过程创建语句对应的第二java文件; 编译模块, 用于编译所述第一java文件生成第一可执行文件, 并编译所述第二java文 件生成第二可执行文件; 加载模块, 用于将所述第一可执行文件及所述第二可执行文件加载至内存中。 9.一种电子设备, 包括存储器、 处理器及存储在所述存储器上并可在所述处理。

9、器上运 行的计算机程序, 其特征在于, 所述处理器执行所述程序时实现权利要求1-7任意一项所述 的方法。 10.一种可读存储介质, 其特征在于, 该可读存储介质上存储有计算机程序, 该计算机 程序被处理器运行时执行如权利要求1-7中任意一项所述的方法。 权利要求书 2/2 页 3 CN 109992259 A 3 函数动态创建方法、 装置及电子设备 技术领域 0001 本申请涉及数据库技术领域, 具体而言, 涉及一种函数动态创建方法、 装置及电子 设备。 背景技术 0002 在传统关系型数据库中, 数据库自定义函数及存储过程具有很重要的作用, 使用 非常普遍, 是数据库软件不可或缺的能力。 传。

10、统数据库创建存储过程各个函数只能独立进 行, 如果存储过程需要调用一个自定义函数, 则需要先创建这个函数并编译通过, 才能使 用。 无法在存储过程的执行中进行动态创建自定义函数, 在一定程度上限制了灵活性。 发明内容 0003 有鉴于此, 本申请的目的在于, 提供一种函数动态创建方法、 装置及电子设备以改 善上述问题。 0004 本申请实施例提供一种函数动态创建方法, 所述方法包括: 0005 获取存储过程的SQL语句, 所述SQL语句包括函数创建语句及存储过程创建语句; 0006 对所述函数创建语句及所述存储过程创建语句进行解析, 获得所述函数创建语句 对应的第一java文件以及所述存储过程。

11、创建语句对应的第二java文件; 0007 编译所述第一java文件生成第一可执行文件, 并编译所述第二java文件生成第二 可执行文件; 0008 将所述第一可执行文件及所述第二可执行文件加载至内存中。 0009 可选地, 所述方法还包括: 0010 将所述函数创建语句与所述第一可执行文件进行关联并保存, 将所述存储过程创 建语句与所述第二可执行文件进行关联并保存。 0011 可选地, 所述对所述函数创建语句及所述存储过程创建语句进行解析, 获得所述 函数创建语句对应的第一java文件以及所述存储过程创建语句对应的第二java文件的步 骤, 包括: 0012 根据第一预设文法规则, 利用文法。

12、解析工具对所述函数创建语句进行解析, 获得 所述函数创建语句对应的第一java文件; 0013 基于第二预设文法规则, 利用所述文法解析工具对所述存储过程创建语句进行解 析, 获得所述存储过程创建语句对应的第二java文件。 0014 可选地, 所述根据第一预设文法规则, 利用文法解析工具对所述函数创建语句进 行解析, 获得所述函数创建语句对应的第一java文件的步骤, 包括: 0015 根据第一预设文法规则, 利用文法解析工具对所述函数创建语句的语法进行解 析, 生成语法树, 所述语法树包括多个节点; 0016 读取所述语法树中包含的各个节点的节点信息, 根据各个节点的节点信息获得所 述语法。

13、树的属性信息; 说明书 1/7 页 4 CN 109992259 A 4 0017 根据所述属性信息将所述函数创建语句转换为第一java文件。 0018 可选地, 所述属性信息包括函数名称、 参数列表及运算表达式, 所述根据所述属性 信息将所述函数创建语句转换为第一java文件的步骤, 包括: 0019 将所述函数名称转换为java类文件名称; 0020 根据所述参数列表生成java类的代码模块; 0021 将所述运算表达式转换为java类表达式; 0022 将生成的所述代码模块及java类表达式写入至预先生成的java文件, 并利用所述 java类文件名称命名所述java文件, 得到所述函数。

14、创建语句对应的第一java文件。 0023 可选地, 所述第一预设文法规则包括词法解析规则以及语法解析规则, 所述根据 第一预设文法规则, 利用文法解析工具对所述函数创建语句的语法进行解析, 生成语法树 的步骤, 包括: 0024 利用所述词法解析规则及文法解析工具对所述函数创建语句进行词法解析, 获得 所述函数创建语句的词法解析结果; 0025 基于所述语法解析规则及所述文法解析工具对所述词法解析结果进行解析, 获得 所述函数创建语句对应的语法树。 0026 可选地, 所述将所述第一可执行文件及所述第二可执行文件加载至内存中的步 骤, 包括: 0027 获取所述第一可执行文件中的函数运行实例。

15、, 将所述函数运行实例注册至内存中 预先配置的函数支持列表中; 0028 获取所述第二可执行文件中的存储过程运行实例, 将所述存储过程运行实例注册 至内存中预先配置的存储过程列表中。 0029 本申请另一实施例提供一种函数动态创建装置, 所述装置包括: 0030 获取模块, 用于获取存储过程的SQL语句, 所述SQL语句包括函数创建语句及存储 过程创建语句; 0031 解析模块, 用于对所述函数创建语句及所述存储过程创建语句进行解析, 获得所 述函数创建语句对应的第一java文件以及所述存储过程创建语句对应的第二java文件; 0032 编译模块, 用于编译所述第一java文件生成第一可执行文。

16、件, 并编译所述第二 java文件生成第二可执行文件; 0033 加载模块, 用于将所述第一可执行文件及所述第二可执行文件加载至内存中。 0034 本申请另一实施例提供一种电子设备, 包括存储器、 处理器及存储在所述存储器 上并可在所述处理器上运行的计算机程序, 所述处理器执行所述程序时实现上述的方法。 0035 本申请另一实施例提供一种可读存储介质, 该可读存储介质上存储有计算机程 序, 该计算机程序被处理器运行时执行上述的方法。 0036 本申请实施例提供的函数动态创建方法、 装置及电子设备, 在获取的存储过程的 SQL语句中包含函数创建语句及存储过程创建语句时, 分别对函数创建语句及存储。

17、过程创 建语句进行解析生成对应的第一java文件及第二java文件, 再分别对其进行编译得到第一 可执行文件和第二可执行文件, 最后将第一可执行文件和第二可执行文件加载至内存中。 如此, 可在创建存储过程中动态创建自定义函数, 便于后续存储过程对自定义函数的调用, 并且基于java代码的通用性, java类的自定义函数及存储过程可支持跨平台的使用。 说明书 2/7 页 5 CN 109992259 A 5 0037 为使本申请的上述目的、 特征和优点能更明显易懂, 下文特举较佳实施例, 并配合 所附附图, 作详细说明如下。 附图说明 0038 为了更清楚地说明本申请实施例的技术方案, 下面将对。

18、实施例中所需要使用的附 图作简单地介绍, 应当理解, 以下附图仅示出了本申请的某些实施例, 因此不应被看作是对 范围的限定, 对于本领域普通技术人员来讲, 在不付出创造性劳动的前提下, 还可以根据这 些附图获得其他相关的附图。 0039 图1为本申请实施例提供的电子设备的示意性结构框图。 0040 图2为本申请实施例提供的函数动态创建方法的流程图。 0041 图3为图2中步骤220包括的子步骤流程图。 0042 图4为图2中步骤240包括的子步骤流程图。 0043 图5为本申请实施例提供的函数动态创建装置的功能模块框图。 0044 图标: 10-电子设备; 110-处理器; 120-存储器; 。

19、130-存储控制器; 140-函数动态创 建装置; 141-获取模块; 142-解析模块; 143-编译模块; 144-加载模块。 具体实施方式 0045 下面将结合本申请实施例中附图, 对本申请实施例中的技术方案进行清楚、 完整 地描述, 显然, 所描述的实施例仅仅是本申请一部分实施例, 而不是全部的实施例。 通常在 此处附图中描述和示出的本申请实施例的组件可以以各种不同的配置来布置和设计。 0046 因此, 以下对在附图中提供的本申请的实施例的详细描述并非旨在限制要求保护 的本申请的范围, 而是仅仅表示本申请的选定实施例。 基于本申请的实施例, 本领域技术人 员在没有做出创造性劳动的前提下。

20、所获得的所有其他实施例, 都属于本申请保护的范围。 0047 应注意到: 相似的标号和字母在下面的附图中表示类似项, 因此, 一旦某一项在一 个附图中被定义, 则在随后的附图中不需要对其进行进一步定义和解释。 0048 请参照图1, 是本申请较佳实施例提供的电子设备10的示意性结构框图。 如图1所 示, 所述电子设备10包括函数动态创建装置140、 存储器120、 存储控制器130以及处理器 110。 这些组件通过一条或多条通信总线/信号线相互通信。 0049 存储器120可以用于存储软件程序以及模块, 如本申请实施例中的函数动态创建 装置140中对应的程序指令/模块, 处理器110通过运行存。

21、储在存储器120内的软件程序以及 模块, 从而执行各种功能应用以及数据处理, 如本申请实施例提供的函数动态创建方法。 0050 所述存储器120可以是, 但不限于, 随机存取存储器(Random Access Memory, RAM), 只读存储器(Read Only Memory, ROM), 可编程只读存储器(Programmable Read-Only Memory, PROM), 可擦除只读存储器(Erasable Programmable Read-Only Memory, EPROM), 电可擦除只读存储器(Electric Erasable Programmable Read-O。

22、nly Memory, EEPROM)等。 处理器110以及其他可能的组件对存储器120的访问可在存储控制器130的控制下进行。 0051 所述处理器110可能是一种集成电路芯片, 具有信号的处理能力。 上述处理器110 可以是通用处理器, 包括中央处理器(Central Processing Unit, CPU)、 网络处理器 (Network Processor, NP)等; 还可以是数字信号处理器(DSP)、 专用集成电路(ASIC)、 现成 说明书 3/7 页 6 CN 109992259 A 6 可编程门阵列(FPGA)或者其他可编程逻辑器件、 分立门或者晶体管逻辑器件、 分立硬件组。

23、 件, 可以实现或者执行本申请实施例中的公开的各方法、 步骤及逻辑框图。 通用处理器可以 是微处理器或者该处理器110也可以是任何常规的处理器等。 0052 于本申请实施例中, 所述电子设备10可以是服务器、 个人电脑(personal computer, PC)、 平板电脑等。 0053 可以理解, 图1所示的结构仅为示意, 电子设备10还可包括比图1中所示更多或者 更少的组件, 或者具有与图1所示不同的配置。 图1中所示的各组件可以采用硬件、 软件或其 组合实现。 0054 结合图2, 本申请实施例还提供一种可应用于上述电子设备10的函数动态创建方 法。 其中, 所述方法有关的流程所定义的。

24、方法步骤可以由所述处理器110实现。 下面将对图2 所示的具体流程进行详细阐述。 0055 步骤210, 获取存储过程的SQL语句, 所述SQL语句包括函数创建语句及存储过程创 建语句。 0056 步骤220, 对所述函数创建语句及所述存储过程创建语句进行解析, 获得所述函数 创建语句对应的第一java文件以及所述存储过程创建语句对应的第二java文件。 0057 本实施例中, 接收用户输入至电子设备10中的存储过程的SQL语句, 其中, 该SQL语 句中包含存储过程创建语句, 此外, 若需要在存储过程创建的同时进行自定义函数的创建 时, 则输入的SQL语句还包含函数创建语句。 其中, 用户输。

25、入的SQL语句可支持SQL99标准语 法。 0058 一般来说, 存储过程实现的功能要复杂一些, 而自定义函数的实现功能针对性比 较强。 存储过程功能强大, 可以执行包括修改表等一系列数据库操作, 而自定义函数不能用 于执行一组修改全局数据库状态的操作。 并且对于存储过程来说, 其可以返回参数, 例如记 录集。 而自定义函数只能返回值或者是表对象。 自定义函数只能返回一个变量, 而存储过程 可以返回多个变量, 存储过程进行声明时不需要返回类型, 而自定义函数声明时需要描述 返回类型, 且函数体中需要包含一个有效的RETURN语句。 0059 此外, 在存储过程中可以使用非确定函数, 而自定义函。

26、数中不允许内置非确定函 数。 此外, 存储过程一般作为一个独立的部分来执行, 而自定义函数可以作为查询语句的一 个部分来调用。 0060 本实施例中, 分别对接收到的函数创建语句及存储过程创建语句进行解析, 获得 函数创建语句对应的第一java文件以及存储过程创建语句对应的第二java文件。 可选地, 预先可设置适用于自定义函数解析的第一预设文法规则, 以及适用于存储过程的第二预设 文法规则。 请参阅图3, 可通过以下步骤进行函数创建语句及存储过程创建语句的解析: 0061 步骤221, 根据第一预设文法规则, 利用文法解析工具对所述函数创建语句进行解 析, 获得所述函数创建语句对应的第一ja。

27、va文件。 0062 步骤222, 基于第二预设文法规则, 利用所述文法解析工具对所述存储过程创建语 句进行解析, 获得所述存储过程创建语句对应的第二java文件。 0063 可选地, 分别根据预先设置的第一预设文法规则和第二预设文法规则, 利用文法 解析工具对函数创建语句和存储过程创建语句进行解析, 以分别得到对应的第一java文件 和第二java文件。 本实施例中, 所述的文法解析工具可以是lex和yacc系的词法和语法解析 说明书 4/7 页 7 CN 109992259 A 7 工具, 或者可以是基于Flex和Bison的语法解析工具。 0064 在本实施例中, 可根据第一预设文法规则。

28、, 利用文法解析工具对函数创建语句的 语法进行解析, 生成语法树。 其中, 生成的语法树包括多个节点。 可通过读取语法树包含的 各个节点的节点信息, 根据各个节点的节点信息获得所述语法树的属性信息。 再根据得到 的属性信息将函数创建语句转换为第一java文件。 0065 同上述得到第一java文件的实现方式一致, 针对存储过程创建语句时, 可利用第 二预设文法规则, 利用文法解析工具对存储过程创建语句的语法进行解析, 生成存储过程 的语法树。 再读取该语法树的各个节点的节点信息, 根据得到的各个节点的节点信息获得 该语法树的属性。 最后, 根据得到的属性信息将存储过程创建语句转换为第二java。

29、文件。 0066 可选地, 本实施例中, 其中第一预设文法规则包括词法解析规则和语法解析规则, 在利用第一预设文法规则对函数创建语句进行解析时, 可通过以下过程实现: 0067 利用所述词法解析规则及文法解析工具对函数创建语句进行词法解析, 获得函数 创建语句的词法解析结果。 再基于语法解析规则及所述文法解析工具对词法解析结果进行 解析, 获得函数创建语句对应的语法树。 0068 同理, 第二预设文法规则同样包含词法解析规则和语法解析规则, 同样地, 先利用 第二预设文法规则包含的词法解析规则及文法解析工具对存储过程创建语句进行词法解 析, 获得存储过程创建语句的词法解析结果。 再基于第二预设。

30、文法规则包含的语法解析规 则和文法解析工具对词法解析结果进行解析, 获得存储过程创建语句对应的语法树。 0069 在本实施例中, 语法树的属性信息包括函数名称、 参数列表及运算表达式, 在根据 属性信息将函数创建语句转换为第一java文件时, 可通过以下过程实现: 0070 由上述可知, 语法树是根据函数创建语句所生成的, 语法树的属性信息中的函数 名称则为基于SQL语句的函数创建语句的函数名称。 可将所述函数名称转换为java类文件 名称。 根据语法树的属性信息中的参数列表生成java类的代码模块, 即java类中的方法代 码。 将语法树的属性信息中的运算表达式转换为java类表达式。 最后。

31、, 将生成的所述代码模 块及java类表达式写入至预先生成的对应于自定义函数的java文件中, 并利用所述java类 文件名称命名所述java文件, 则得到函数创建语句对应的第一java文件。 0071 同上述方式类似, 在得到存储过程创建语句对应的语法树的基础上, 获得该语法 树的属性信息。 同样的, 存储过程创建语句对应的语法树的属性信息包含函数名称, 该函数 名称为基于SQL语句的存储过程创建语句的函数名称。 此外, 语法树的属性信息还包括参数 列表及运算表达式。 可将存储过程创建语句的函数名称转换为java类文件名称。 再根据参 数列表生成java类的代码模块, 将运算表达式转换为ja。

32、va类中的方法代码。 最后, 将生成的 代码模块及java类表达式写入至预先建立的对应于存储过程的java文件中, 并利用得到的 java类文件名称命名该文件, 得到存储过程创建语句对应的第二java文件。 0072 步骤230, 编译所述第一java文件生成第一可执行文件, 并编译所述第二java文件 生成第二可执行文件。 0073 步骤240, 将所述第一可执行文件及所述第二可执行文件加载至内存中。 0074 本实施例中, 为了便于后续快速、 直接调用相应文件, 可编译第一java文件和第二 java文件得到第一可执行文件和第二可执行文件, 并将第一可执行文件和第二可执行文件 加载至内存中。

33、。 如此, 后续可直接进行调用。 说明书 5/7 页 8 CN 109992259 A 8 0075 可选地, 请参阅图4, 可通过以下方式将第一可执行文件和第二可执行文件加载至 内存中: 0076 步骤241, 获取所述第一可执行文件中的函数运行实例, 将所述函数运行实例注册 至内存中预先配置的函数支持列表中。 0077 步骤242, 获取所述第二可执行文件中的存储过程运行实例, 将所述存储过程运行 实例注册至内存中预先配置的存储过程列表中。 0078 本实施例中, 电子设备10内部存储设备中预先建立并存储有函数支持列表及存储 过程列表。 在编译得到第一可执行文件后, 可获取其中的函数运行实。

34、例, 并将获得的函数运 行实例添加至预先配置的函数支持列表中。 同样地, 可编译得到第二可执行文件后, 获取其 中的存储过程运行实例, 并将存储过程运行实例添加至预先配置的存储过程列表中。 0079 进一步地, 为了代码的复用性以及后续对相应代码的快速修改, 本实施例提供的 函数动态创建方法还包括以下步骤: 0080 将函数创建语句与所述第一可执行文件进行关联并保存, 并且将存储过程创建语 句与所述第二可执行文件进行关联并保存。 如此, 则建立函数创建语句与第一可执行文件 之间的关联关系, 后续需要对第一可执行文件进行修改时, 可快速找到SQL语句的数据源, 有利于数据的修改操作。 同样地, 。

35、建立存储过程创建语句与第二可执行文件之间的关联关 系, 在需要对第二可执行文件进行修改时, 可快速找到对应的存储过程的SQL语句, 实现修 改操作。 0081 本实施例中, 在将函数创建语句与第一可执行文件关联后进行持久化保存, 且将 存储过程创建语句与第二可执行文件关联后进行持久化保存。 其中, 采用持久化保存的方 式在当前程序退出后, 其中的数据仍然能够保留下来, 供程序再次运行时候使用。 其中, 持 久化保存的具体方式可以是保存至文件中、 数据库中或者是保存磁盘中。 0082 本实施例提供的函数动态创建方案, 实现了将函数创建及存储过程创建的SQL语 句转换为java代码, 从而实现自定。

36、义函数及存储过程的代码类型的统一。 且将转换后的 java代码进行动态编译, 将编译后的函数运行实例及存储过程运行实例注册至内存中, 方 便用户在大数据中使用存储过程且支持后续存储过程调用函数的能力。 并且, 由于java类 对于不同系统较为通用, 因此java类的自定义函数及存储过程支持跨平台的使用。 0083 请参阅图5, 本申请另一实施例还提供一种应用于上述电子设备10的函数动态创 建装置140。 该函数动态创建装置140包括获取模块141、 解析模块142、 编译模块143及加载 模块144。 0084 获取模块141, 用于获取存储过程的SQL语句, 所述SQL语句包括函数创建语句及。

37、存 储过程创建语句。 具体地, 所述获取模块141可以用于执行图2中所示的步骤210, 具体的操 作方法可以参考步骤210的详细描述。 0085 解析模块142, 用于对所述函数创建语句及所述存储过程创建语句进行解析, 获得 所述函数创建语句对应的第一java文件以及所述存储过程创建语句对应的第二java文件。 具体地, 所述解析模块142可以用于执行图2中所示的步骤220, 具体的操作方法可以参考步 骤220的详细描述。 0086 编译模块143, 用于编译所述第一java文件生成第一可执行文件, 并编译所述第二 java文件生成第二可执行文件。 具体地, 所述编译模块143可以用于执行图2。

38、中所示的步骤 说明书 6/7 页 9 CN 109992259 A 9 230, 具体的操作方法可以参考步骤230的详细描述。 0087 加载模块144, 用于将所述第一可执行文件及所述第二可执行文件加载至内存中。 具体地, 所述加载模块144可以用于执行图2中所示的步骤240, 具体的操作方法可以参考步 骤240的详细描述。 0088 所属领域的技术人员可以清楚地了解到, 为描述的方便和简洁, 上述描述的装置 的具体工作过程, 可以参考前述方法中的对应过程, 在此不再过多赘述。 0089 本申请实施例还提供一种计算机可读存储介质, 其上存储有计算机程序, 所述计 算机程序被处理器110执行时。

39、可实现上述的函数动态创建方法。 0090 综上所述, 本申请实施例提供的函数动态创建方法、 装置及电子设备10, 在获取的 存储过程的SQL语句中包含函数创建语句及存储过程创建语句时, 分别对函数创建语句及 存储过程创建语句进行解析生成对应的第一java文件及第二java文件, 再分别对其进行编 译得到第一可执行文件和第二可执行文件, 再将第一可执行文件和第二可执行文件加载至 内存中。 如此, 可在创建存储过程中动态创建自定义函数, 便于后续存储过程对自定义函数 的调用, 并且基于java代码的通用性, java类的自定义函数及存储过程可支持跨平台的使 用。 0091 在本申请所提供的实施例中。

40、, 应该理解到, 所揭露的装置和方法, 也可以通过其它 的方式实现。 以上所描述的装置实施例仅仅是示意性的, 例如, 附图中的流程图和框图显示 了根据本申请的实施例的装置、 方法和计算机程序产品的可能实现的体系架构、 功能和操 作。 在这点上, 流程图或框图中的每个方框可以代表一个模块、 程序段或代码的一部分, 所 述模块、 程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。 也应当注意, 在有些作为替换的实现方式中, 方框中所标注的功能也可以以不同于附图中 所标注的顺序发生。 例如, 两个连续的方框实际上可以基本并行地执行, 它们有时也可以按 相反的顺序执行, 这依所涉及。

41、的功能而定。 也要注意的是, 框图和/或流程图中的每个方框、 以及框图和/或流程图中的方框的组合, 可以用执行规定的功能或动作的专用的基于硬件 的系统来实现, 或者可以用专用硬件与计算机指令的组合来实现。 0092 需要说明的是, 在本文中, 术语 “包括” 、“包含” 或者其任何其他变体意在涵盖非排 他性的包含, 从而使得包括一系列要素的过程、 方法、 物品或者设备不仅包括那些要素, 而 且还包括没有明确列出的其他要素, 或者是还包括为这种过程、 方法、 物品或者设备所固有 的要素。 在没有更多限制的情况下, 由语句 “包括一个” 限定的要素, 并不排除在包括所 述要素的过程、 方法、 物品。

42、或者设备中还存在另外的相同要素。 0093 以上所述仅为本申请的优选实施例而已, 并不用于限制本申请, 对于本领域的技 术人员来说, 本申请可以有各种更改和变化。 凡在本申请的精神和原则之内, 所作的任何修 改、 等同替换、 改进等, 均应包含在本申请的保护范围之内。 应注意到: 相似的标号和字母在 下面的附图中表示类似项, 因此, 一旦某一项在一个附图中被定义, 则在随后的附图中不需 要对其进行进一步定义和解释。 0094 以上所述, 仅为本申请的具体实施方式, 但本申请的保护范围并不局限于此, 任何 熟悉本技术领域的技术人员在本申请揭露的技术范围内, 可轻易想到变化或替换, 都应涵 盖在本申请的保护范围之内。 因此, 本申请的保护范围应以所述权利要求的保护范围为准。 说明书 7/7 页 10 CN 109992259 A 10 图1 图2 说明书附图 1/3 页 11 CN 109992259 A 11 图3 图4 说明书附图 2/3 页 12 CN 109992259 A 12 图5 说明书附图 3/3 页 13 CN 109992259 A 13 。

展开阅读全文
内容关键字: 函数 动态 创建 方法 装置 电子设备
关于本文
本文标题:函数动态创建方法、装置及电子设备.pdf
链接地址:https://www.zhuanlichaxun.net/pdf/11704068.html
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2017-2018 zhuanlichaxun.net网站版权所有
经营许可证编号:粤ICP备2021068784号-1