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

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

Info

Publication number
CN102707956A
CN102707956A CN2012101568056A CN201210156805A CN102707956A CN 102707956 A CN102707956 A CN 102707956A CN 2012101568056 A CN2012101568056 A CN 2012101568056A CN 201210156805 A CN201210156805 A CN 201210156805A CN 102707956 A CN102707956 A CN 102707956A
Authority
CN
China
Prior art keywords
vernier
trigger
return results
variable
results
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.)
Granted
Application number
CN2012101568056A
Other languages
English (en)
Other versions
CN102707956B (zh
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.)
Fujian Huizhi Digital Tongda Technology Co ltd
Original Assignee
Beijing University of Technology
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 Beijing University of Technology filed Critical Beijing University of Technology
Priority to CN201210156805.6A priority Critical patent/CN102707956B/zh
Publication of CN102707956A publication Critical patent/CN102707956A/zh
Application granted granted Critical
Publication of CN102707956B publication Critical patent/CN102707956B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Debugging And Monitoring (AREA)

Abstract

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

Description

用于处理触发器返回结果不确定性的方法
技术领域
本发明涉及计算机软件技术领域,尤其涉及一种用于处理触发器返回结果不确定性的方法。
背景技术
随着当前互联网迅速发展,对数据存储、通讯的要求也随之剧增,从而加速了数据库软件的不断更新换代。以往的数据库软件,一般仅可以满足本地数据存储、访问,存在容量小、不易交互等特点。随着网络规模的不断扩大,人们需要一种大型的、分布式的、海量存储的数据库管理软件,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;。
以上对本发明所提供的用于处理触发器返回结果不确定性的方法进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。

Claims (4)

1.一种用于处理触发器返回结果不确定性的方法,其特征在于,包括:
将需要使用的游标进行声明,同时声明一个变量,并赋值;
在使用游标时用隐式调用,抛出异常情形,按照不同的异常情况改变该变量的值;
通过判断变量值,进入不同的分支语句中,执行程序。
2.根据权利要求1所述的用于处理触发器返回结果不确定性的方法,其特征在于,当返回多个结果时,使用显式游标调用。
3.根据权利要求1所述的用于处理触发器返回结果不确定性的方法,其特征在于,当返回1个结果时,使用隐式游标调用。
4.根据权利要求2所述的用于处理触发器返回结果不确定性的方法,其特征在于,使用显式游标调用时,还包括判定游标循环是否结束。
CN201210156805.6A 2012-05-18 2012-05-18 用于处理触发器返回结果不确定性的方法 Active CN102707956B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201210156805.6A CN102707956B (zh) 2012-05-18 2012-05-18 用于处理触发器返回结果不确定性的方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201210156805.6A CN102707956B (zh) 2012-05-18 2012-05-18 用于处理触发器返回结果不确定性的方法

Publications (2)

Publication Number Publication Date
CN102707956A true CN102707956A (zh) 2012-10-03
CN102707956B CN102707956B (zh) 2015-12-16

Family

ID=46900780

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201210156805.6A Active CN102707956B (zh) 2012-05-18 2012-05-18 用于处理触发器返回结果不确定性的方法

Country Status (1)

Country Link
CN (1) CN102707956B (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110399129A (zh) * 2019-07-30 2019-11-01 网易(杭州)网络有限公司 一种触发器的报错方法和装置
WO2020177073A1 (zh) * 2019-03-05 2020-09-10 深圳市天软科技开发有限公司 获取数据集的方法、终端设备及计算机可读存储介质
CN114416052A (zh) * 2021-12-30 2022-04-29 重庆允成互联网科技有限公司 触发器变量赋值方法、触发器配置方法及计算机存储介质

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1770145A (zh) * 2004-11-04 2006-05-10 北京神舟航天软件技术有限公司 游标处理系统及方法

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1770145A (zh) * 2004-11-04 2006-05-10 北京神舟航天软件技术有限公司 游标处理系统及方法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
竺海娟: "《Oracle数据库应用技术(初级)》", 31 August 2002, 东华大学出版社 *
马锡坤,吴爱民: "Oracle游标的使用方法", 《医疗设备信息》 *

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2020177073A1 (zh) * 2019-03-05 2020-09-10 深圳市天软科技开发有限公司 获取数据集的方法、终端设备及计算机可读存储介质
CN110399129A (zh) * 2019-07-30 2019-11-01 网易(杭州)网络有限公司 一种触发器的报错方法和装置
CN114416052A (zh) * 2021-12-30 2022-04-29 重庆允成互联网科技有限公司 触发器变量赋值方法、触发器配置方法及计算机存储介质
CN114416052B (zh) * 2021-12-30 2023-02-03 重庆允成互联网科技有限公司 触发器变量赋值方法、触发器配置方法及计算机存储介质

Also Published As

Publication number Publication date
CN102707956B (zh) 2015-12-16

Similar Documents

Publication Publication Date Title
CN110908997B (zh) 数据血缘构建方法、装置、服务器及可读存储介质
CN102323945B (zh) 一种基于sql的数据库管理方法和装置
CN107463632A (zh) 一种分布式NewSQL数据库系统和数据查询方法
CN106897322B (zh) 一种数据库和文件系统的访问方法和装置
US8219518B2 (en) Method and apparatus for modelling data exchange in a data flow of an extract, transform, and load (ETL) process
CN110908641B (zh) 基于可视化的流计算平台、方法、设备和存储介质
US9280568B2 (en) Zero downtime schema evolution
CN105389251A (zh) 结构化查询语言调试器
US11023443B2 (en) Collaborative planning for accelerating analytic queries
US8271416B2 (en) Method for dynamically determining a predetermined previous condition of a rule-based system
JP5614843B2 (ja) ソフトウェア設計・運用統合管理システム
US10489266B2 (en) Generating a visualization of a metric at one or multiple levels of execution of a database workload
US11893026B2 (en) Advanced multiprovider optimization
CN105022739A (zh) 数据的存储方法及装置
CN107193543B (zh) 一种批量操作执行方法及装置
Fisun et al. Query parsing in order to optimize distributed DB structure
CN106446064B (zh) 一种数据转换方法及装置
CN103984713A (zh) 一种基于云计算的财务数据查询方法
CN105224527A (zh) 适用于多种目的表更新方式的通用etl方法
CN103745319A (zh) 一种基于多状态科学工作流的数据世系追溯系统和方法
CN105205178A (zh) 一种多进程访问内存数据库系统
Gonultas et al. Run-time calculation of COSMIC functional size via automatic installment of measurement code into Java business applications
Kolovos et al. The epsilon pattern language
CN102707956B (zh) 用于处理触发器返回结果不确定性的方法
JP6376947B2 (ja) 仮想データベースシステム管理装置、管理方法及び管理プログラム

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
TR01 Transfer of patent right

Effective date of registration: 20201117

Address after: 233000 Room 102 north, No.11, No.2 building, liukm Huayuan commercial building, Changqing Township, Yuhui District, Bengbu City, Anhui Province

Patentee after: Anhui Licha Information Technology Co.,Ltd.

Address before: 102600, room 2, building 2212, center 3, 2 Xinghua street, Daxing District, Beijing

Patentee before: BEIJING YONGBO TECHNOLOGY Co.,Ltd.

Effective date of registration: 20201117

Address after: 102600, room 2, building 2212, center 3, 2 Xinghua street, Daxing District, Beijing

Patentee after: BEIJING YONGBO TECHNOLOGY Co.,Ltd.

Address before: 100022 No. 100 Chaoyang District Ping Tian Park, Beijing

Patentee before: Beijing University of Technology

TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20221017

Address after: No. 87, Middle Street West Road, Pingchuan Street, Wuping County, Longyan City, Fujian Province, 361000

Patentee after: Fujian Huizhi Digital Tongda Technology Co.,Ltd.

Address before: 233000 Room 102 north, No.11, No.2 building, liukm Huayuan commercial building, Changqing Township, Yuhui District, Bengbu City, Anhui Province

Patentee before: Anhui Licha Information Technology Co.,Ltd.

TR01 Transfer of patent right