首页> 中国专利> 用于处理触发器返回结果不确定性的方法

用于处理触发器返回结果不确定性的方法

摘要

本发明主要提出一种用于处理触发器返回结果不确定性的方法,涉及计算机软件技术领域,具体的,首先给其赋值,在处理游标时,通过oracle中对不同返回结果做出的相应异常处理,根据返回结果数量不同改变变量值,如,变量开始时为1,当游标返回一个结果时,值不变,当游标返回多个结果时,变量值赋值为2,当游标没有结果返回时,变量值赋值为0,再通过判断语句,不同的变量值执行不同的程序段,这样,结构清晰、简单明确,触发器可以准确处理游标的返回结果,将复杂问题简化,从而完成预期目标。本发明所要解决的技术问题是提供一种用于处理触发器返回结果不确定性的方法,通过分析结果,巧妙解决数据库触发器返回结果不确定性问题。

著录项

  • 公开/公告号CN102707956A

    专利类型发明专利

  • 公开/公告日2012-10-03

    原文格式PDF

  • 申请/专利权人 北京工业大学;

    申请/专利号CN201210156805.6

  • 发明设计人 何泾沙;王经纬;张玉强;

    申请日2012-05-18

  • 分类号G06F9/44(20060101);

  • 代理机构11335 北京汇信合知识产权代理有限公司;

  • 代理人夏静洁

  • 地址 100022 北京市朝阳区平乐园100号

  • 入库时间 2023-12-18 06:42:37

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2022-10-28

    专利权的转移 IPC(主分类):G06F 9/44 专利号:ZL2012101568056 登记生效日:20221017 变更事项:专利权人 变更前权利人:安徽立查信息科技有限公司 变更后权利人:福建汇智数字通达科技有限公司 变更事项:地址 变更前权利人:233000 安徽省蚌埠市禹会区长青乡六公里花苑商业2号楼11号北102室 变更后权利人:361000 福建省龙岩市武平县平川街道中街西路87号

    专利申请权、专利权的转移

  • 2015-12-16

    授权

    授权

  • 2012-11-28

    实质审查的生效 IPC(主分类):G06F9/44 申请日:20120518

    实质审查的生效

  • 2012-10-03

    公开

    公开

说明书

技术领域

本发明涉及计算机软件技术领域,尤其涉及一种用于处理触发器返回结果不确定性的方法。

背景技术

随着当前互联网迅速发展,对数据存储、通讯的要求也随之剧增,从而加速了数据库软件的不断更新换代。以往的数据库软件,一般仅可以满足本地数据存储、访问,存在容量小、不易交互等特点。随着网络规模的不断扩大,人们需要一种大型的、分布式的、海量存储的数据库管理软件,oracle数据库软件应运而生,并且在许多大型网络通讯系统中得到广泛应用。如今,国内一些企业在开发应用系统时,往往会选择oracle数据库,这样,可以满足其不同领域需求。

相对于小型应用系统,使用较大型数据库反而影响系统性能,成为一种浪费,这些系统的数据库无非就是处理一些基本的SQL语句,很少会有需要数据库自动处理的流程。对一些大公司而言,其分支机构不会在同一地区,但需要与总服务器进行业务流程的交互,在对这些公司的软件开发时,一般会使用oracle数据库,在实际应用中,oracle会承担一些自动完成的流程,这样简化了程序代码的结构,使得代码层次清晰,减轻了开发端的工作量。比如,触发器操作、定时JOB等,这样,减少了整个软件系统的过多的关联,使得数据库独立出来。

触发器是一种很有应用价值的数据库开发模式,它主要作用于对指定表某个字段的操作发生时或发生后,其他表的数据改变,例如:当A表中a1字段更新时,整条记录都会插入到B表中;当然,这是一个极其简单的例子,在实际应用中,都是一些较大数据量的操作,不仅要求触发器处理迅速、流畅,还要求数据准确性,这对触发器的要求是十分高的。

在触发器中,经常会用到游标,其主要就是一个具有条件限制的结果集,通过游标得到需要进行操作的字段的数据,提取数据后做出相应计算等操作,以完成相应任务。游标的使用有一定的流程,首先,需要声明游标;然后,需要使用时,调用游标,通常,先打开游标,再循环调用,直到找不到结果;最后,对相应数据进行操作。游标分为隐式游标和显示游标两种,其中隐式游标不用声明,它是游标的一种特例——只有一个结果返回,而显式游标需要声明、循环调用,这样的设计在实际开发中会带来一些问题。

在实际工作中,一些涉及数据库的业务不仅工作量大,而且各种数据、关系处理起来十分复杂,数据表的字段多,如果交给后台处理,没有数据库直接处理起来速度快,但是,正事由于在设计触发器时游标返回值的不确定性,往往会导致数据库端的程序错误,从而影响这个系统的流程畅通,加之数据库编程语言没有高级语言那样简洁、清晰,不少开发人员会放弃数据库端的编程开发,转而将工作交给后台,这样会加重后台的负荷,让功能强大的数据库空闲,只处理一些SQL语句。

所谓游标结果返回值的不确定性,就是指当返回一个结果集时,有时是一个结果,有时是多个结果,当遇到多个结果的时候,使用隐式游标就会报错,相反,同样会报错,这一问题没有一个有效的解决办法,而且有的数据库处理软件没有调试触发器的功能,让问题显得棘手。

因此,当下需要迫切解决的一个技术问题就是:如何能够提出一种有效的措施,以解决现有技术中存在的问题。

发明内容

本发明所要解决的技术问题是提供一种用于处理触发器返回结果不确定性的方法,通过分析结果,巧妙解决数据库触发器返回结果不确定性问题。

为了解决上述技术问题,本发明提供了一种用于处理触发器返回结果不确定性的方法,包括:

将需要使用的游标进行声明,同时声明一个变量,并赋值;

在使用游标时用隐式调用,抛出异常情形,按照不同的异常情况改变该变量的值;

通过判断变量值,进入不同的分支语句中,执行程序。

进一步地,当返回多个结果时,使用显式游标调用。

进一步地,当返回1个结果时,使用隐式游标调用。

进一步地,使用显式游标调用时,还包括判定游标循环是否结束。

综上,本发明提供的用于处理触发器返回结果不确定性的方法,首先给其赋值,在处理游标时,根据返回结果数量不同改变变量值,如,变量开始时为1,当游标返回一个结果时,值不变,当游标返回多个结果时,变量值赋值为2,当游标没有结果返回时,变量值赋值为0,再通过判断语句,不同的变量值执行不同的程序段,这样,结构清晰、简单明确,触发器可以准确处理游标的返回结果,将复杂问题简化,从而完成预期目标。

附图说明

图1是本发明具体实施方式中所述的用于处理触发器返回结果不确定性的方法流程示意图。

具体实施方式

下面结合附图和具体实施方式对本发明作进一步详细的说明。

当前在数据库触发器的开发中,通常会使用游标,其主要功能就是通过一些条件限制,返回一条或者多条记录,通过从记录中提取字段来进行计算,从而达到数据库独立处理事务的目的。在对游标的使用中,其返回结果的数量存在不确定性,加之触发器编程语言并不像其他面向对象开发语言那样灵活、简洁,使得触发器的应用并不广泛,让一些功能强大的数据库没有充分发挥其强大的性能。本方案中,在使用隐式游标时,有处理异常的属性,这是解决问题的关键,正是因为可以抓住异常,才可以知道到底游标返回几个结果。通常使用最多的是返回多行的异常,当抛出异常时,可以进行相应操作,通常使用改变变量值的方法,通过判断变量的值进行分支执行程序。

参见图1给出了一种用于处理触发器返回结果不确定性的方法流程示意图,具体包括:

步骤S101,将需要使用的游标进行声明,同时声明一个变量,并赋值;

步骤S102,在使用游标时用隐式调用,抛出异常情形,按照不同的异常情况改变该变量的值;

步骤S103,通过判断变量值,进入不同的分支语句中,执行程序。

在实际应用中,当返回多个结果时,使用显式游标调用。当返回1个结果时,使用隐式游标调用。且,使用显式游标调用时,还包括判定游标循环是否结束。

下面通过具体的实例对本发明所述的方案作更为详细的介绍:

首先,在触发器开头声明一个变量,并赋值,如变量名a,初值为1;同时,声明使用的游标。

然后,当有列举结果集的需要时,使用隐式调用游标的方法,捕捉到返回结果的异常,并改变变量的值。比如,当抛出多行返回异常时,a的值赋值为2,当抛出没有找到数据异常时,a的值赋值为0。

最后,根据变量不同的值,进入不同的分支,执行语句。比如,当a为1时,说明游标返回一个结果,那么使用隐式游标调用,用相应的语法操作字段;当a为2时,说明游标返回多个结果,使用显式游标调用,通过开启游标,逐步循环,操作相关数据,直到没有返回结果;当a为0时,说明游标为空,即没有结果返回,再做出相应处理。这样每种异常都会有一个处理方法,不会因为异常的出现而崩溃,这样一来,触发器可以准确、快速的处理事务,同时,程序执行的层次也变得分明,易于处理。

在对触发器进行调试时,可以清楚的看到程序执行的顺序,通过引入变量获得不同的情况,从而进入不同的分支,层次分明,执行准确,结构清晰。

当然,在实际开发工作中,触发器的应用并不是如此简单,并不拘泥于一张简单的表,有时操作的表会很多,声明的变量会有多个,涉及不止一个游标的调用和循环,在结构上会很复杂,代码量也很大,只要处理好事先声明变量的值,进入不同的分支语句执行,触发器的优势就能充分体现。

更进一步的,给出实际应用中触发器的一般格式及解决方法的一般程序格式:

触发器的格式:

Create or replace trigger触发器名        -触发器头

After update(updating)on表名             -说明触发器作用时间(更新后活更新时)、所用的表

For each row                             -对每一行起作用

Declare

一些变量

游标的声明

Begin

程序块;

End;

一般情况下,触发器的触发是由于某一字段的值的变化引起的,该字段所在表在触发前后用:new和:old区别,一般使用:new.字段名来表示本表的字段。所以,在触发器的程序体的开头一般会有一个判断语句,如:if(:new.字段名=某值then…,表示当该字段变为制定值时,触发器开始工作。

游标的显示调用格式:

open游标名;

loop

fetch XXX into相应变量;

exit when(游标没有返回结果);

程序执行语句。。。

end loop;

close游标名;

隐式调用游标格式:

Select字段名。。。into变量。。。from表名where条件;

其中,当隐式调用时,如有异常,会抛出异常,一般分为无结果返回和多行返回两种,格式如下:

Exception when no_data_found then执行语句;

Exception when too_many_rows then执行语句;

本发明流程程序的一般格式:

Declare a number(2);    -声明变量

Cursor XX is            -声明游标

Select XX from xx shere…;

a:=1;                   -变量赋值

Begin

select XXX into XXXX from XX where…;

exception

when no_data_found then a:=0;

when too_many_rows then a:=2;

if(a=1)then             -只有一个结果返回

select XXX into XXXX from XX where…;

执行语句。。。

Else if(if=2)then      -返回多个结果

Open游标名              -打开游标。执行循环

Loop

Fetch游标into变量。。。;

执行语句

end loop;

close游标名;

end;

else                    -没有结果返回的情况

执行语句。。

End;。

以上对本发明所提供的用于处理触发器返回结果不确定性的方法进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号