CN104636471A - 一种程序代码的查找方法及装置 - Google Patents

一种程序代码的查找方法及装置 Download PDF

Info

Publication number
CN104636471A
CN104636471A CN201510075869.7A CN201510075869A CN104636471A CN 104636471 A CN104636471 A CN 104636471A CN 201510075869 A CN201510075869 A CN 201510075869A CN 104636471 A CN104636471 A CN 104636471A
Authority
CN
China
Prior art keywords
code
data
tables
self
program
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
CN201510075869.7A
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.)
Agricultural Bank of China
Original Assignee
Agricultural Bank of China
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 Agricultural Bank of China filed Critical Agricultural Bank of China
Priority to CN201510075869.7A priority Critical patent/CN104636471A/zh
Publication of CN104636471A publication Critical patent/CN104636471A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/43Checking; Contextual analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/31Programming languages or programming paradigms
    • G06F8/312List processing, e.g. LISP programming language

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本申请提供了一种程序代码查找方法及装置,该方法包括:在接收到数据表变更消息后,获取数据访问层程序的代码段,并提取数据表变更消息中的数据表标识,进而在代码段中查找对数据表标识对应的数据表执行操作的代码,若查找到,记录该代码段的程序标识,从而实现在数据表变更后,对与其关联的数据访问层程序的查找,避免人工查找方式效率较低及容易疏漏的技术问题。

Description

一种程序代码的查找方法及装置
技术领域
本申请涉及代码查找技术领域,尤其是一种程序代码的查找方法及装置。
背景技术
目前,各种软件***都会使用到数据库***,并且应用层程序需要访问数据库内数据表中存储的数据,来实现相应的功能。以银行***为例,软件***在实现存款交易等功能时,存款交易模块需要查找到账户余额表,并将存款金额等各种信息存入到账户余额表中,这个过程可称为程序对数据表的操作或者访问。
但是,数据表自身信息会发生变更,为了保证程序对变更后的数据表的正确访问,需要程序开发人员修改相应代码,因此,需要在大量的***代码中查找到与变更后的数据表具有访问关系的程序。目前的查找方式为人工查找,该种方式效率较低且容易出现疏漏。
发明内容
有鉴于此,本发明提供了一种程序代码的查找方法及装置,用以实现在数据表发生变化的情况下,实现对与该数据表相关的程序的自动查询。为实现所述目的,本发明提供的技术方案如下:
一种程序代码的查找方法,包括:
当接收到数据表变更消息时,获取数据访问层程序的代码段;
提取所述数据表变更消息中的数据表标识,并在所述代码段中,查找对所述数据表标识对应的数据表执行第一操作的代码;其中,所述第一操作包括增加、删除、查找、修改或连接;
若查找到,记录所述代码段对应的程序标识。
优选地,上述的程序代码的查找方法,所述在所述代码段中,查找对所述数据表标识对应的数据表执行第一操作的代码包括:
利用预设数据表访问模板,在所述代码段中,查找对数据表执行第一操作的代码;其中,所述预设数据表访问模板中包括对数据表执行操作的格式代码,所述数据表为所述数据表标识对应的数据表;
当所述代码段中包含对视图执行第二操作的代码时,在视图的代码中,查找对所述数据表执行第一操作的代码;其中,所述第二操作包括查找或连接;
当所述代码段中包含调用自定义存储过程的代码时,利用所述自定义存储过程的代码,查找对所述数据表执行第一操作的代码。
优选地,上述的程序代码的查找方法还包括:
当所述代码段中包含动态操作标识且所述数据表标识作为参数时,标记所述代码段对应的程序标识为备选程序;
当所述代码段中包含调用***存储过程的代码且所述数据表标识作为参数时,标记所述代码段对应的程序标识为备选程序。
优选地,上述的程序代码的查找方法,在视图的代码中,查找对所述数据表执行第一操作的代码包括:
利用预设数据表访问模板,在所述视图的代码中,查找对所述数据表执行第一操作的代码;
当所述视图的代码中包含对新的视图执行第二操作的代码时,返回利用预设数据表访问模板,在新的视图的代码中,查找对所述数据表执行第一操作的代码。
优选地,上述的程序代码的查找方法,所述利用所述自定义存储过程的代码,查找对所述数据表执行第一操作的代码包括:
当所述代码段中包含调用自定义存储过程的代码时,利用预设数据表访问模板,在该自定义存储过程的代码中,查找对所述数据表执行第一操作的代码;
当所述自定义存储过程的代码中包含对视图执行第二操作的代码时,在视图的代码中,查找对所述数据表执行第一操作的代码;
当所述自定义存储过程的代码中包含调用自定义函数的代码时,利用所述自定义函数的代码,查找对所述数据表执行第一操作的代码;
当所述自定义存储过程的代码中包含新的自定义存储过程的代码时,返回利用所述新的自定义存储过程的代码,查找对所述数据表执行第一操作的代码。
优选地,上述的程序代码的查找方法,所述利用所述自定义函数的代码,查找对所述数据表执行第一操作的代码包括:
利用预设数据表访问模板,在所述自定义函数的代码中,查找对所述数据表执行第一操作的代码;
当所述自定义函数的代码中包含对视图执行第二操作的代码时,返回在视图的代码中,查找对所述数据表执行第一操作的代码。
优选地,上述的程序代码的查找方法还包括:
当所述自定义函数的代码中包含所述动态操作标识且所述数据表作为参数时,标记所述代码段对应的程序标识为备选程序。
优选地,上述的程序代码的查找方法还包括:
当所述代码段中存在注释语句时,删除所述代码段中的注释语句。
本申请还提供了一种程序代码的查找装置,包括:
代码段获取模块,用于当接收到数据表变更消息时,获取数据访问层程序的代码段;
操作代码查找模块,用于提取所述数据表变更消息中的数据表标识,并在所述代码段中,查找对所述数据表标识对应的数据表执行第一操作的代码;其中,所述第一操作包括增加、删除、查找、修改或连接;若查找到,触发程序标识记录模块;
程序标识记录模块,用于记录所述代码段对应的程序标识。
优选地,上述的程序代码的查找装置,还包括:
注释语句删除模块,用于当所述代码段中存在注释语句时,删除所述代码段中的注释语句。
由以上可知,本发明具有如下有益效果:
本发明提供的代码查找方法,在接收到数据表变更消息后,获取数据访问层程序的代码段,并提取数据表变更消息中的数据表标识,进而在代码段中查找对数据表标识对应的数据表执行操作的代码,若查找到,记录该代码段的程序标识,从而实现在数据表变更后,对与其关联的数据访问层程序的查找,避免人工查找方式效率较低及容易疏漏的技术问题。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本发明实施例提供的程序代码的查找方法的流程图;
图2为本发明另一实施例提供的程序代码的查找方法的流程图;
图3为本发明又一实施例提供的程序代码的查找方法的部分流程图;
图4为本发明又一实施例提供的程序代码的查找方法的部分流程图;
图5为本发明又一实施例提供的程序代码的查找方法的流程图;
图6为本发明又一实施例提供的程序代码的查找方法的部分流程图;
图7为本发明实施例提供的程序代码的查找装置的结构示意图;
图8为本发明另一实施例提供的程序代码的查找装置的部分结构示意图;
图9为本发明又一实施例提供的程序代码的查找装置的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
参见图1,其示出了本发明实施例提供的程序代码的查找方法的流程,具体包括以下步骤:
步骤S101:当接收到数据表变更消息时,获取数据访问层程序的代码段。
其中,数据表发生变化时,会生成变更消息,该变更消息会被发送至本实施例的执行装置,触发该执行装置获取数据访问层程序的代码段。其中,数据访问层程序的代码段存储在代码服务器上,在代码服务器上下载全部的数据访问层程序,需要说明的是,这些程序是所有访问数据表的程序,但需要在其中查找到访问变更的数据表的程序。
步骤S102:提取所述数据表变更消息中的数据表标识,并在所述代码段中,查找对所述数据表标识对应的数据表执行第一操作的代码;其中,所述第一操作包括增加、删除、查找、修改或连接;若查找到,执行步骤S103。
其中,判断变更的数据表是否被数据访问层的程序访问,只需判断程序的所有代码段中是否有一段代码访问了变更的数据表。数据表变更消息中包含数据表标识,该标识代表变更过的数据表。在该变更消息中提取数据表标识,并在各个程序代码段中查找访问该数据表的代码,若查找到,说明该程序与变更的数据表具有关联关系,或者说,变更的数据表会影响到该数据访问的程序,进而执行步骤S103记录该程序。
程序与数据表的关联指的是程序对数据表的操作,具体包括向数据表内增加记录、删除数据表中的记录、在数据表中查找记录、修改数据表中的记录或者将多个数据表进行连接。需要说明的是,此处的操作被称为第一操作,是为了便于描述并且与下文的操作进行区分,并没有特指顺序的含义。
步骤S103:记录所述代码段对应的程序标识。
具体地,若某个程序的代码段中包括对变更数据表的操作,记录该代码段的程序标识。程序标识可以是程序名称,记录的方式可以是将程序标识记录在列表中,当然,程序标识可以是唯一代表程序的任意标识,并且还可以用其他的方式对程序标识进行记录。需要说明的是,步骤S101中获取到的程序可以是多个,并且步骤S102是对每个程序都进行查找,若在任意多个程序中均查找到对变更后的数据表的访问,则本步骤会记录下多个程序标识。
由以上的技术方案可知,本实施例提供的程序代码的查找方法,在接收到数据表变更的消息后,首先获取数据访问层程序的代码段,并提取该数据表变更消息中的数据表标识,该数据表标识代表变更后的数据表,进而在获取到的各个代码段中查找对该数据表执行操作的代码,若查找到,则记录该代码段对应的程序标识,从而获得访问变更后的数据表的各个程序,该种方式避免人工查找方式效率较低及容易疏漏的技术问题。另外,查找到各个程序,便可为开发人员修改程序提供依据,最终保证程序对变更后的数据表的准确访问。
上述实施例中,连接可以是内部连接(inner join)、外部连接(outer join)或笛卡尔积连接(cross join),外部连接可以具体包括left join、right join或者full join三种。并且,该实施例可以应用在Rule编程语言环境中,数据表应用的数据库可以为DB2,程序访问DB2的方式可以是ESQL方式,当然,这仅仅是一种具体应用实例,还可以是应用在其他的程序设计语言及数据库产品中。
下载的程序代码段中可能包含注释语句,因此,为了避免查找过程中错误地将注释语句解析为真正访问数据库的语句,需要在解析前判断,即在步骤S101之后及步骤S102之前还包括:判断代码段中是否存在注释语句,若存在,删除代码段中的注释语句。
需要说明的是,以上及以下各个实施例可以但不局限于银行业务***中,只要是利用数据表存储数据,且应用程序需要访问访问变更后的数据表的情况均可适用。
上述实施例中,步骤S102的查找是一个复杂的解析过程,除了要在程序代码段本身进行查找外,还需要校验访问时引用的视图或者存储过程等,下面结合图2对查找过程进行具体说明。如图2所示,步骤S102的具体实现过程可以包括以下内容:
步骤S201:利用预设数据表访问模板,在所述代码段中,查找对数据表执行第一操作的代码;其中,所述预设数据表访问模板中包括对数据表执行操作的格式代码,所述数据表为所述数据表标识对应的数据表。
具体地,代码段中可能包括“简单SQL”,即单纯对数据表进行增删查改或连接操作的代码。因此,为了实现查找出该种形式的访问语句,可以利用预设数据表访问模板,在代码段中查找对数据表执行上述操作的代码。其中,数据表访问模板中包括对数据表执行操作的格式代码,若在待查找的代码段中查找到符合该模板中任意一种格式代码的代码,说明步骤S102的查找结果为查找到,进而执行步骤S103记录该段代码的程序标识。
例如,数据表访问模板包含的查找格式代码为:select……from数据表集合,利用该数据表访问模板中的各个格式代码与待查找的代码进行匹配,若待查找的代码中包含select时,进而判断selcet后面的代码是否符合from数据表集合的格式,若是,说明该段代码为对数据表执行查找操作的代码,进而执行步骤S103记录该段代码的程序标识。例如,待查找的代码段中包含一段代码:select……from T1,XX;where T1.id=XX.id。根据上述的查找说明,该段代码符合数据表访问模板中的查找格式代码,因此,需要对该段代码的程序标识进行记录。
需要说明的是,根据数据表访问规律,对数据表的操作中最多的往往是查找操作,因此,为了提高整体的查找效率,设置的数据表访问模板可以是将查找操作放置在首位,从而,如图3所示,利用数据表访问模板查找代码段时,可以首先查找是否包括查找操作语句。其后,可以是依次查找是否包括增加、修改、删除或连接的代码,进一步,连接操作还可以有先后顺序,如首先查找内部连接、然后查找外部连接,最后查找笛卡尔积连接。当然,上述查找先后顺序仅仅是一种示例,实施时并不局限于此,还可以是任意其他顺序,或者是同时执行。
当然,程序访问数据表的形式可能是非简单SQL方式,如调用视图或者存储过程。因此,除了需要查找简单SQL,还要对视图和存储过程进行判断。
步骤S202:当所述代码段中包含对视图执行第二操作的代码时,在视图的代码中,查找对所述数据表执行第一操作的代码;其中,所述第二操作包括查找或连接。
具体地,程序中可能操作视图,视图可能操作更新的数据表,这种情况同样属于程序对更新数据表的操作。因此,判断代码段中是否包括对视图执行操作的代码,该操作包括查找视图或连接视图,其中,查找视图的格式代码为select……from集合A,集合A中包括视图,连接视图的格式代码为innerjoin视图、outer join视图或者cross join视图。若包括,需要进一步判断该视图是否访问了更新的数据表,即在视图的代码中,查找是否存在对更新的数据表执行操作的代码,若查找到,说明步骤S102的查找结果为是,进而执行步骤S103记录下载的该段代码的程序标识。
需要说明的是,对视图代码的查找过程可以是一个递归过程,即视图可以调用视图,因此,在视图代码中同样需要判断是否调用新的视图。本步骤的具体实现过程包括:利用预设数据表访问模板,在所述视图的代码中,查找对所述数据表执行第一操作的代码,判断所述视图的代码中是否包含对新的视图执行第二操作的代码,若是,返回利用预设数据表访问模板,在新的视图的代码中,查找对所述数据表执行第一操作的代码。
该查找过程中,在视图代码中查找对数据表执行操作的代码的方式可以是利用数据表访问模板。并且,可以首先进行该种查找,若该查找的结果为未查找到,再进一步查找该视图代码中是否调用新的视图,相反,若查找到,会直接执行步骤S103的记录过程,不必执行进一步的查找过程。另外,若需要进一步地查找视图中是否调用新的视图,查找方式如本步骤,并不做赘述。
步骤S203:当所述代码段中包含调用自定义存储过程的代码时,利用所述自定义存储过程的代码,查找对所述数据表执行第一操作的代码。
同理,程序还可能调用自定义存储过程,自定义存储过程中可能包括对更新数据表的操作,因此,判断代码段中是否调用自定义的存储过程,若是,进一步利用该自定义存储过程查找对更新数据表执行操作的代码。如图4所示,本步骤的查找过程可以具体包括:
步骤S401:当所述代码段中包含调用自定义存储过程的代码时,利用预设数据表访问模板,在该自定义存储过程的代码中,查找对所述数据表执行第一操作的代码。步骤S402:当所述自定义存储过程的代码中包含对视图执行第二操作的代码时,在视图的代码中,查找对所述数据表执行第一操作的代码。步骤S403:当所述自定义存储过程的代码中包含调用自定义函数的代码时,利用所述自定义函数的代码,查找对所述数据表执行第一操作的代码。步骤S404:当所述自定义存储过程的代码中包含新的自定义存储过程的代码时,返回利用所述新的自定义存储过程的代码,查找对所述数据表执行第一操作的代码。
由于自定义存储过程可以继续调用视图、自定义函数及新的自定义存储过程,因此,上述查找过程具体来讲,一是利用数据表访问模板,直接在该自定义存储过程中查找对更新数据表的操作,二是查找该自定义存储过程中是否包括对视图的调用,若是,则在视图的代码中查找对更新数据表的操作,三是查找该自定义存储过程中是否包括对自定义函数的调用,若是,则在自定义函数的代码中查找对更新数据表的操作,四是查找该自定义存储过程中是否包括对新的自定义存储过程的调用,若是,则在新的自定义存储过程的代码中查找对更新数据表的操作。
由此可见,需要在自定义存储过程中进行四种不同的查找。需要说明的是,这四种查找可以是同时进行,也可以是先后执行,若任何一种查找的查找结果为是,则说明步骤S102的查找结果为是,进而直接执行步骤S103。当然,该四种查找还可以是先后执行,即当前一种查找的查找结果为否,才执行后一种查找。当然,查找的先后顺序可以并不局限于文字的上述位置顺序,可以是任意排列顺序。
进一步地,如同利用视图的查找,利用自定义函数的查找可以包括在自定义函数的自身代码中查找,还可以在其调用的视图中继续查找。即:利用预设数据表访问模板,在自定义函数的代码中,查找对所述数据表执行第一操作的代码;当自定义函数的代码中包含对视图执行第二操作的代码时,返回在视图的代码中,查找对所述数据表执行第一操作的代码。可见,利用自定义函数的查找过程也可以是一个递归过程,即自定义函数可能调用视图,如上述有关视图的说明,视图可以调用新的视图。其中,在视图中代码中查找对数据表执行操作的方式可以参见上文描述,不做赘述。
整体来看,上述步骤S201利用数据表访问模板的查找、步骤S202利用视图代码的查找及步骤S203利用自定义存储过程的查找,可以是同时执行,也可以是先后执行。
需要说明的是,程序除了利用简单SQL、视图或自定义存储过程这三种方式中的任意一种访问数据表外,还可能是以动态SQL或者***存储过程方式访问数据表。但是,前三种方式是在查找到相应的格式代码后,便可直接明确地确定程序访问了变更数据表,但后两种方式则不然,因此,在查找到后两种方式的格式代码后,并不能将其直接以步骤S103的方式进行记录,而是将其标记为备选程序,以供相关人员以人工方式进行确定。因此,如图5所示,若步骤S102的查找结果为未查找到时,还可以包括:
步骤S104:当所述代码段中包含动态操作标识且所述数据表标识作为参数时,或者,当所述代码段中包含调用***存储过程的代码且所述数据表标识作为参数时,标记所述代码段对应的程序标识为备选程序。
具体地,以动态SQL方式访问数据表的具体体现为,代码段中包含动态SQL操作标识。因此,在代码段中判断是否包含动态SQL操作标识,若包括,且变更数据表作为动态操作的参数,则需要将该代码段的程序标识标记为备选程序。
以调用***存储过程的方式访问数据表的具体体现为,代码段中包含调用存储过程的代码。需要说明的是,***存储过程是预设的,且保存在数据库***中,因此,判断代码段中是否包括数据库***中预存的***存储过程,若包括,且变更数据表作为调用时的参数,则需要将该代码段的程序标识标记为备选程序。
另外,自定义函数中也可能会以动态方式访问数据表,因此,如图6所示,步骤S304利用自定义存储过程的代码,查找对所述数据表执行操作的代码的查找结果为否时,还可以包括:
步骤S405:当所述自定义函数的代码中包含所述动态操作标识且所述数据表作为参数时,标记所述代码段对应的程序标识为备选程序。
下面对本发明实施例提供的程序代码的查找装置进行介绍,需要说明的是,有关程序代码的查找装置的说明可参照上文的程序代码的查找方法,以下并不做赘述。
参照图7,其示出了本发明实施例提供的程序代码查找装置的结构,具体包括代码段获取模块100、操作代码查找模块200及程序标识记录模块300;其中:
代码段获取模块100,用于当接收到数据表变更消息时,获取数据访问层程序的代码段;
操作代码查找模块200,用于提取所述数据表变更消息中的数据表标识,并在所述代码段中,查找对所述数据表标识对应的数据表执行第一操作的代码;其中,所述第一操作包括增加、删除、查找、修改或连接;若查找到,触发程序标识记录模块;
程序标识记录模块300,用于记录所述代码段对应的程序标识。
由以上技术方案可以看出,本实施例提供的程序代码的查找装置中,代码段获取模块100在接收到数据表变更消息后,获取数据访问层程序的代码段,进而操作代码查找模块200利用数据表变更消息中的数据表标识,在代码段中,查找对数据表执行操作的代码,程序标识记录模块300进而记录代码段的程序标识,从而实现了对程序代码的查找。
另外,上述查找装置还可以包括:注释语句删除模块,用于当所述代码段中存在注释语句时,删除所述代码段中的注释语句。
另外,如图8所示,操作代码查找模块200可以具体包括:第一查找子模块201、第二查找子模块202及第三查找子模块203;其中:
第一查找子模块201,用于利用预设数据表访问模板,在所述代码段中,查找对数据表执行第一操作的代码;其中,所述预设数据表访问模板中包括对数据表执行操作的格式代码,所述数据表为所述数据表标识对应的数据表;
第二查找子模块202,用于当所述代码段中包含对视图执行第二操作的代码时,在视图的代码中,查找对所述数据表执行第一操作的代码;其中,所述第二操作包括查找或连接;
第三查找子模块203,用于当所述代码段中包含调用自定义存储过程的代码时,利用所述自定义存储过程的代码,查找对所述数据表执行第一操作的代码。
另外,如图9所示,上述的查找装置还可以包括:备选程序标记模块400,用于当所述代码段中包含动态操作标识且所述数据表标识作为参数时,或者,当所述代码段中包含调用***存储过程的代码且所述数据表标识作为参数时,标记所述代码段对应的程序标识为备选程序。
另外,第二查找子模块202可以具体包括:查找单元及循环单元,其中:
查找单元,用于利用预设数据表访问模板,在所述视图的代码中,查找对所述数据表执行第一操作的代码;
循环单元,用于当所述视图的代码中包含对新的视图执行第二操作的代码时,返回触发查找单元利用预设数据表访问模板,在新的视图的代码中,查找对所述数据表执行第一操作的代码。
另外,第三查找子模块203具体包括:第一查找单元、第二查找单元、第三查找单元及第四查找单元;其中:
第一查找单元,用于当所述代码段中包含调用自定义存储过程的代码时,利用预设数据表访问模板,在该自定义存储过程的代码中,查找对所述数据表执行第一操作的代码;
第二查找单元,用于当所述自定义存储过程的代码中包含对视图执行第二操作的代码时,在视图的代码中,查找对所述数据表执行第一操作的代码;
第三查找单元,用于当所述自定义存储过程的代码中包含调用自定义函数的代码时,利用所述自定义函数的代码,查找对所述数据表执行第一操作的代码;
第四查找单元,用于当所述自定义存储过程的代码中包含新的自定义存储过程的代码时,返回利用所述新的自定义存储过程的代码,查找对所述数据表执行第一操作的代码。
具体地,第三查找单元包括:查找子单元及循环子单元;其中:
查找子单元,用于利用预设数据表访问模板,在所述自定义函数的代码中,查找对所述数据表执行第一操作的代码;
循环子单元,用于当所述自定义函数的代码中包含对视图执行第二操作的代码时,返回在视图的代码中,查找对所述数据表执行第一操作的代码。
另外,上述查找装置还可以包括:备选程序标记子单元,用于当所述自定义函数的代码中包含所述动态操作标识且所述数据表作为参数时,标记所述代码段对应的程序标识为备选程序。
需要说明的是,本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括上述要素的过程、方法、物品或者设备中还存在另外的相同要素。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。

Claims (10)

1.一种程序代码的查找方法,其特征在于,包括:
当接收到数据表变更消息时,获取数据访问层程序的代码段;
提取所述数据表变更消息中的数据表标识,并在所述代码段中,查找对所述数据表标识对应的数据表执行第一操作的代码;其中,所述第一操作包括增加、删除、查找、修改或连接;
若查找到,记录所述代码段对应的程序标识。
2.根据权利要求1所述的程序代码的查找方法,其特征在于,所述在所述代码段中,查找对所述数据表标识对应的数据表执行第一操作的代码包括:
利用预设数据表访问模板,在所述代码段中,查找对数据表执行第一操作的代码;其中,所述预设数据表访问模板中包括对数据表执行操作的格式代码,所述数据表为所述数据表标识对应的数据表;
当所述代码段中包含对视图执行第二操作的代码时,在视图的代码中,查找对所述数据表执行第一操作的代码;其中,所述第二操作包括查找或连接;
当所述代码段中包含调用自定义存储过程的代码时,利用所述自定义存储过程的代码,查找对所述数据表执行第一操作的代码。
3.根据权利要求1所述的程序代码的查找方法,其特征在于,还包括:
当所述代码段中包含动态操作标识且所述数据表标识作为参数时,标记所述代码段对应的程序标识为备选程序;
当所述代码段中包含调用***存储过程的代码且所述数据表标识作为参数时,标记所述代码段对应的程序标识为备选程序。
4.根据权利要求2所述的程序代码的查找方法,其特征在于,在视图的代码中,查找对所述数据表执行第一操作的代码包括:
利用预设数据表访问模板,在所述视图的代码中,查找对所述数据表执行第一操作的代码;
当所述视图的代码中包含对新的视图执行第二操作的代码时,返回利用预设数据表访问模板,在新的视图的代码中,查找对所述数据表执行第一操作的代码。
5.根据权利要求2所述的程序代码的查找方法,其特征在于,所述利用所述自定义存储过程的代码,查找对所述数据表执行第一操作的代码包括:
当所述代码段中包含调用自定义存储过程的代码时,利用预设数据表访问模板,在该自定义存储过程的代码中,查找对所述数据表执行第一操作的代码;
当所述自定义存储过程的代码中包含对视图执行第二操作的代码时,在视图的代码中,查找对所述数据表执行第一操作的代码;
当所述自定义存储过程的代码中包含调用自定义函数的代码时,利用所述自定义函数的代码,查找对所述数据表执行第一操作的代码;
当所述自定义存储过程的代码中包含新的自定义存储过程的代码时,返回利用所述新的自定义存储过程的代码,查找对所述数据表执行第一操作的代码。
6.根据权利要求5所述的程序代码的查找方法,其特征在于,所述利用所述自定义函数的代码,查找对所述数据表执行第一操作的代码包括:
利用预设数据表访问模板,在所述自定义函数的代码中,查找对所述数据表执行第一操作的代码;
当所述自定义函数的代码中包含对视图执行第二操作的代码时,返回在视图的代码中,查找对所述数据表执行第一操作的代码。
7.根据权利要求6所述的程序代码的查找方法,其特征在于,还包括:
当所述自定义函数的代码中包含所述动态操作标识且所述数据表作为参数时,标记所述代码段对应的程序标识为备选程序。
8.根据权利要求1所述的程序代码的查找方法,其特征在于,还包括:
当所述代码段中存在注释语句时,删除所述代码段中的注释语句。
9.一种程序代码的查找装置,其特征在于,包括:
代码段获取模块,用于当接收到数据表变更消息时,获取数据访问层程序的代码段;
操作代码查找模块,用于提取所述数据表变更消息中的数据表标识,并在所述代码段中,查找对所述数据表标识对应的数据表执行第一操作的代码;其中,所述第一操作包括增加、删除、查找、修改或连接;若查找到,触发程序标识记录模块;
程序标识记录模块,用于记录所述代码段对应的程序标识。
10.根据权利要求9所述的程序代码的查找装置,其特征在于,还包括:
注释语句删除模块,用于当所述代码段中存在注释语句时,删除所述代码段中的注释语句。
CN201510075869.7A 2015-02-12 2015-02-12 一种程序代码的查找方法及装置 Pending CN104636471A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201510075869.7A CN104636471A (zh) 2015-02-12 2015-02-12 一种程序代码的查找方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201510075869.7A CN104636471A (zh) 2015-02-12 2015-02-12 一种程序代码的查找方法及装置

Publications (1)

Publication Number Publication Date
CN104636471A true CN104636471A (zh) 2015-05-20

Family

ID=53215217

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201510075869.7A Pending CN104636471A (zh) 2015-02-12 2015-02-12 一种程序代码的查找方法及装置

Country Status (1)

Country Link
CN (1) CN104636471A (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108984612A (zh) * 2018-06-12 2018-12-11 中国平安人寿保险股份有限公司 目标sql语句的获取方法、装置、计算机设备及存储介质
CN110309145A (zh) * 2019-04-15 2019-10-08 中国银行股份有限公司 一种数据表调整方法、数据表创建方法及装置
CN110659293A (zh) * 2019-09-24 2020-01-07 支付宝(杭州)信息技术有限公司 基于变更代码的数据表确定方法以及装置
CN112925552A (zh) * 2021-02-26 2021-06-08 北京百度网讯科技有限公司 代码处理方法、装置、设备及存储介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6413645A (en) * 1987-07-07 1989-01-18 Fujitsu Ltd Automatic update method for data base
US20070143530A1 (en) * 2005-12-15 2007-06-21 Rudelic John C Method and apparatus for multi-block updates with secure flash memory
CN103631601A (zh) * 2013-12-10 2014-03-12 北京中电普华信息技术有限公司 一种代码生成方法和装置
CN103677869A (zh) * 2012-09-06 2014-03-26 中国科学院计算技术研究所 无线传感器网络节点远程代码更新***及方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6413645A (en) * 1987-07-07 1989-01-18 Fujitsu Ltd Automatic update method for data base
US20070143530A1 (en) * 2005-12-15 2007-06-21 Rudelic John C Method and apparatus for multi-block updates with secure flash memory
CN103677869A (zh) * 2012-09-06 2014-03-26 中国科学院计算技术研究所 无线传感器网络节点远程代码更新***及方法
CN103631601A (zh) * 2013-12-10 2014-03-12 北京中电普华信息技术有限公司 一种代码生成方法和装置

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108984612A (zh) * 2018-06-12 2018-12-11 中国平安人寿保险股份有限公司 目标sql语句的获取方法、装置、计算机设备及存储介质
CN108984612B (zh) * 2018-06-12 2024-02-02 中国平安人寿保险股份有限公司 目标sql语句的获取方法、装置、计算机设备及存储介质
CN110309145A (zh) * 2019-04-15 2019-10-08 中国银行股份有限公司 一种数据表调整方法、数据表创建方法及装置
CN110659293A (zh) * 2019-09-24 2020-01-07 支付宝(杭州)信息技术有限公司 基于变更代码的数据表确定方法以及装置
CN110659293B (zh) * 2019-09-24 2022-02-11 支付宝(杭州)信息技术有限公司 基于变更代码的数据表确定方法以及装置
CN112925552A (zh) * 2021-02-26 2021-06-08 北京百度网讯科技有限公司 代码处理方法、装置、设备及存储介质
CN112925552B (zh) * 2021-02-26 2023-07-28 北京百度网讯科技有限公司 代码处理方法、装置、设备及存储介质

Similar Documents

Publication Publication Date Title
US8510338B2 (en) Indexing information about entities with respect to hierarchies
CN102279749B (zh) 一种代码归并方法和设备
CN103514201B (zh) 一种非关系型数据库的数据查询方法和装置
US20080133570A1 (en) Determining boolean logic and operator precedence of query conditions
CN104965735A (zh) 用于生成升级sql脚本的装置
CN105224527B (zh) 适用于多种目的表更新方式的通用etl方法
US10296505B2 (en) Framework for joining datasets
CN106407360B (zh) 一种数据的处理方法及装置
KR101573561B1 (ko) X500 데이터 모델을 관계형 데이터베이스에 매핑하는 방법
CN104573022A (zh) 一种HBase的数据查询方法及装置
CN103810224A (zh) 信息持久化和查询方法及装置
CN106055528A (zh) 文书自动生成方法及装置
CN104636471A (zh) 一种程序代码的查找方法及装置
CN110866024A (zh) 一种矢量数据库增量更新方法及***
CN108197187A (zh) 查询语句的优化方法、装置、存储介质和计算机设备
CN111143370B (zh) 用于分析多个数据表之间关系的方法、设备和计算机可读存储介质
CN115543402A (zh) 一种基于代码提交的软件知识图谱增量更新方法
CN105677805A (zh) 一种利用protobuf的数据存储、读取方法及装置
CN109634585B (zh) 一种基于表单自适应展示和更新服务端数据的方法
CN100527131C (zh) 一种ims数据库互动式访问方法和工具
CN114385587A (zh) 一种面向关系型数据库版本快照的构建方法及查询方法
CN110147396B (zh) 一种映射关系生成方法及装置
WO2016022019A1 (en) Method for data input into a database
CN111143356B (zh) 报表检索方法及装置
CN112817931B (zh) 一种增量版本文件的生成方法及装置

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
WD01 Invention patent application deemed withdrawn after publication

Application publication date: 20150520

WD01 Invention patent application deemed withdrawn after publication