第3章 应用实例技巧_第1页
第3章 应用实例技巧_第2页
第3章 应用实例技巧_第3页
第3章 应用实例技巧_第4页
第3章 应用实例技巧_第5页
已阅读5页,还剩25页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、-2-第第3 3章章 应用实例技巧应用实例技巧目目 录录3.1 3.1 一对多表单设计一对多表单设计3.2 3.2 数据加锁方法数据加锁方法3.3 3.3 回滚与提示回滚与提示3.4 3.4 游标模板游标模板3.5 3.5 通知发布通知发布3.6 3.6 常用外部函数常用外部函数本章小结本章小结-3-第第3 3章章 应用实例技巧应用实例技巧3.1 3.1 一对多表单设计一对多表单设计3.1.1 3.1.1 关联关系关联关系 现实世界中相互可以区分的事物称为现实世界中相互可以区分的事物称为实体实体。实体之间存在着直接或实体之间存在着直接或间接的联系,这些联系在数据库中反映为实体之间的联系。两个实

2、体之间接的联系,这些联系在数据库中反映为实体之间的联系。两个实体之间的联系分为三类。间的联系分为三类。一对一联系(一对一联系(1 11 1) 对于实体集对于实体集A A和实体集和实体集B B,如果,如果A A中的每一个实体,在中的每一个实体,在B B中最多只有一中最多只有一个实体与之联系,反之亦然,则称实体集个实体与之联系,反之亦然,则称实体集A A与实体集与实体集B B之间具有之间具有一对一一对一联系联系,记作,记作1 11 1。一对多联系(一对多联系(1 1n n) 对于实体集对于实体集A A和实体集和实体集B B,如果,如果A A中的每一个实体,在中的每一个实体,在B B中有中有n n(

3、n0n0)个实体与之联系,反之,个实体与之联系,反之,B B中的每一个实体,中的每一个实体,A A中有且只有一个实体与中有且只有一个实体与之联系,则称实体集之联系,则称实体集A A与实体集与实体集B B之间具有之间具有一对多联系一对多联系, 记作记作1 1n n。-4-第第3 3章章 应用实例技巧应用实例技巧多对多联系(多对多联系(m mn n) 对于实体集对于实体集A A和实体集和实体集B B,如果,如果A A中的每一个实体,在中的每一个实体,在B B中有中有n n(n0n0)个实体与之联系,反之,个实体与之联系,反之,B B中的每一个实体,在中的每一个实体,在A A中也有中也有m m(m0

4、m0)个实)个实体与之联系,则称实体集体与之联系,则称实体集A A与实体集与实体集B B之间具有之间具有多对多联系多对多联系,记作,记作m mn n。3.1.2 3.1.2 数据设计模型数据设计模型关联符号关联符号 在关系型数据库概念模型中,常用的关联关系符号如图在关系型数据库概念模型中,常用的关联关系符号如图3.13.1所示。所示。图图(a)(a)表示可选,表示可选,(b)(b)表示强制,表示强制,(c)(c)表示一对多,表示一对多,(d)(d)表示依赖。表示依赖。依赖依赖是一对多关系的一种,要求被依赖的表的关键字是依赖的表的主键属是一对多关系的一种,要求被依赖的表的关键字是依赖的表的主键属

5、性。性。 (a a) (b b) (c c) (d)(d)图图3.1 3.1 关联关系符号关联关系符号-5-第第3 3章章 应用实例技巧应用实例技巧概念数据模型概念数据模型 概念数据模型概念数据模型(Conceptual Data ModelConceptual Data Model,CDMCDM)是一组严格定义)是一组严格定义的模型元素的集合,这些模型元素精确地描述了系统的静态特性、动的模型元素的集合,这些模型元素精确地描述了系统的静态特性、动态特性和完整性约束条件,它包括数据结构、数据操作和完整性约束态特性和完整性约束条件,它包括数据结构、数据操作和完整性约束三部分。三部分。物理数据模型物

6、理数据模型 物理数据模型物理数据模型(Physical Data ModelPhysical Data Model,PDMPDM)是将)是将CDMCDM转化成特定转化成特定数据库管理系统下的数据库管理系统下的SQLSQL程序的图形化表示。程序的图形化表示。(a) (b)RELATION_1部门档案科室名称备注员工档案员工姓名备注DEPARTMENTNAME = DEPARTMENTNAMEDEPARTMENTDEPARTMENTNAMEVARCHAR2(50)DEP_REMARKSVARCHAR2(250)EMPLOYEEDEPARTMENTNAMEVARCHAR2(20)EMPLOYEENA

7、MEVARCHAR2(20)EMP_REMARKSVARCHAR2(250)图图3.2 3.2 一对多关联关系一对多关联关系 -6-第第3 3章章 应用实例技巧应用实例技巧面向对象模型面向对象模型 面向对象模型面向对象模型(Object Oriented ModelObject Oriented Model,OOMOOM)是运用面向对象)是运用面向对象环境将模型信息用标准化的图形元素进行显示并建立软件模型的过程。环境将模型信息用标准化的图形元素进行显示并建立软件模型的过程。3.1.3 3.1.3 一对多表单数据库设计一对多表单数据库设计 在数据库设计过程中,系统开发人员需要妥善解决的问题:在数

8、据库设计过程中,系统开发人员需要妥善解决的问题:从用户提供的零乱并且错综复杂的需求信息中抽象并优化,设计出符从用户提供的零乱并且错综复杂的需求信息中抽象并优化,设计出符合规范化要求的数据库结构。合规范化要求的数据库结构。在设计信息系统的数据库概念模型和物理模型中,要考虑用户过去手在设计信息系统的数据库概念模型和物理模型中,要考虑用户过去手工处理与信息系统新的数据存储结构的差异和系统实现等多方面的因工处理与信息系统新的数据存储结构的差异和系统实现等多方面的因素。素。设计并实现尽量符合用户手工操作习惯的信息系统操作功能界面。设计并实现尽量符合用户手工操作习惯的信息系统操作功能界面。 下面以医院信息

9、管理系统中药库出入库业务的设计与实现为例说明下面以医院信息管理系统中药库出入库业务的设计与实现为例说明一对多表单设计与优化的过程。一对多表单设计与优化的过程。-7-第第3 3章章 应用实例技巧应用实例技巧图图3.3 3.3 药库入库单药库入库单药药 库库 入入 库库 单单入库单编号:入库单编号: 2682 2682 入库日期:入库日期:2007.11.30 2007.11.30 入库人员:入库人员:李李 平平 供应商名称:供应商名称: 神州制药公司神州制药公司 地地 址:址:北京北京 邮邮 编:编:100100* * * * 供应商开户行:供应商开户行:工商银行工商银行 供应商银行账号:供应商

10、银行账号:0 0* * *-8-8* * * * * * * * 供应商电话:供应商电话: 010-8010-8* * * * * * * * 联联 系系 人:人:李李 东东 联系电话:联系电话:133133* * * * *09810981序号序号药品药品编码编码药品名称药品名称单单位位包包装装进价进价数量数量金额金额有效日期有效日期1 1050430504310%10%葡萄糖注射液葡萄糖注射液(250ml)(250ml)瓶瓶箱箱6.006.00100010006000.006000.002008.02.302008.02.302 20104101041阿莫西林胶囊阿莫西林胶囊(250mg(

11、250mg2424粒粒) )盒盒盒盒12.0012.001000100012000.0012000.002008.02.302008.02.303 30107601076阿昔洛韦片阿昔洛韦片(0.1g(0.1g30#)30#)盒盒盒盒22.0022.001001002200.002200.002008.04.302008.04.304 40105401054阿奇霉素片阿奇霉素片(250mg(250mg6 6粒粒) )盒盒盒盒30.0030.0050501500.001500.002008.04.302008.04.305 50301403014安宫黄体酮片安宫黄体酮片(2mg(2mg100#)

12、100#)盒盒盒盒15.0015.002002003000.003000.002009.06.302009.06.306 60902009020爱活胆通胶囊爱活胆通胶囊(100(100粒粒) )盒盒盒盒20.0020.002602605200.005200.002009.06.302009.06.307 705044050445%5%葡萄糖注射液葡萄糖注射液(250ml)(250ml)瓶瓶箱箱5.005.00100010005000.005000.002009.08.302009.08.308 80202302023安体舒通片安体舒通片(20mg(20mg100#)100#)盒盒盒盒120.0

13、0120.0050506000.006000.002010.08.302010.08.309 913034130348484消毒液消毒液(500ml)(500ml)瓶瓶箱箱8.008.00100100800.00800.002010.10.302010.10.3010100701007010安定片安定片(2.5mg(2.5mg100#)100#)瓶瓶瓶瓶150.00150.0020203000.003000.002010.10.302010.10.30 总金额:总金额:44700.00 44700.00 审核人:审核人:王王 中中 审核日期:审核日期:2007.12.01 2007.12.01

14、 一级规范要求一级规范要求: :p无组合项无组合项p无空白项无空白项p无重复项无重复项-8-第第3 3章章 应用实例技巧应用实例技巧表表3.1 3.1 一级规范的药库入库单表一级规范的药库入库单表入库单入库单编号编号省略省略1010个字段个字段 联系联系人人联系电话联系电话序序号号药品药品编码编码省略省略6 6个字段个字段金额金额26822682 李东李东133133* * * * *098109811 10504305043 6000.006000.0026822682 李东李东133133* * * * *098109812 20104101041 12000.0012000.002682

15、2682 李东李东133133* * * * *098109813 30107601076 2200.002200.0026822682 李东李东133133* * * * *098109814 40105401054 1500.001500.0026822682 李东李东133133* * * * *098109815 50301403014 3000.003000.0026822682 李东李东133133* * * * *098109816 60902009020 5200.005200.0026822682 李东李东133133* * * * *098109817 7050440504

16、4 5000.005000.0026822682 李东李东133133* * * * *098109818 80202302023 6000.006000.0026822682 李东李东133133* * * * *098109819 91303413034 800.00800.0026822682 李东李东133133* * * * *0981098110100701007010 3000.003000.00-9-第第3 3章章 应用实例技巧应用实例技巧二级规范要求在一级规范化后的二级规范要求在一级规范化后的表中不能存在部分依赖关系的属表中不能存在部分依赖关系的属性。性。在图在图3.4“3.

17、4“入库单入库单”表中,主键由表中,主键由“入库单编号入库单编号”和和“序号序号”两个两个属性组成,而从属性组成,而从“药品编号药品编号”到到“有效日期有效日期”8 8个属性都只依赖于个属性都只依赖于“序号序号”属性。属性。因此需要将这些属性从因此需要将这些属性从“入库单入库单”表中拆分出来,形成表中拆分出来,形成 “ “入库单单入库单单头头”和和“入库单单目入库单单目” ” 两个表。两个表。入 库 单入 库 单 编 号序 号入 库 日 期入 库 人 员供 应 商 名 称联 系 人联 系 电 话供 应 商 电 话地 址邮 编供 应 商 开 户 行供 应 商 银 行 账 号药 品 编 码药 品

18、名 称单 位包 装进 价数 量金 额有 效 日 期总 金 额审 核 人审 核 日 期图图3.4 3.4 一级规范后的一级规范后的“入库单入库单”结构结构部分依赖部分依赖-10-第第3 3章章 应用实例技巧应用实例技巧1 :n入库单单头入库单编号入库日期入库人员供应商名称联系人联系电话供应商电话地址邮编供应商开户行供应商银行账号总金额审核人审核日期入库单单目序号药品编码药品名称单位包装进价数量金额有效日期图图3.5 3.5 二级规范后的二级规范后的“入库单入库单”结构结构入 库 单入 库 单 编 号序 号入 库 日 期入 库 人 员供 应 商 名 称联 系 人联 系 电 话供 应 商 电 话地

19、址邮 编供 应 商 开 户 行供 应 商 银 行 账 号药 品 编 码药 品 名 称单 位包 装进 价数 量金 额有 效 日 期总 金 额审 核 人审 核 日 期部分依赖部分依赖-11-第第3 3章章 应用实例技巧应用实例技巧表表3.2 3.2 药库入库单单头表药库入库单单头表入入库库单单编编号号入库入库日期日期入入库库人人员员审审核核人人审核审核日期日期供应供应商名商名称称地地址址邮编邮编开开户户行行银行银行账号账号电话电话联联系系人人联系联系电话电话总金额总金额268226822007.2007.11.3011.30李平李平 王中王中2007.2007.12.0112.01神州制神州制药公

20、司药公司北京北京 100100* * * *工商工商银行银行0 0* * *- -8 8* * * * * * * *010-010-8 8* * * * * * * *李东李东133133* * * *0981098144700.0044700.00-12-第第3 3章章 应用实例技巧应用实例技巧表表3.3 3.3 药库入库单单目表药库入库单单目表序序号号入库入库单编单编号号药品药品编码编码药品名称药品名称单位单位 包装包装有效日期有效日期进价进价数量数量金额金额1 126822682 0504305043 10%10%葡萄糖注射液葡萄糖注射液(250ml)(250ml)瓶瓶箱箱2008.0

21、2.302008.02.306.006.00 100010006000.006000.002 226822682 0104101041 阿莫西林胶囊阿莫西林胶囊(250mg(250mg2424粒粒) )盒盒盒盒2008.02.302008.02.3012.0012.00 10001000 12000.0012000.003 326822682 0107601076 阿昔洛韦片阿昔洛韦片(0.1g(0.1g30#)30#)盒盒盒盒2008.04.302008.04.3022.0022.001001002200.002200.004 426822682 0105401054 阿奇霉素片阿奇霉素片(

22、250mg(250mg6 6粒粒) )盒盒盒盒2008.04.302008.04.3030.0030.0050501500.001500.005 526822682 0301403014 安宫黄体酮片安宫黄体酮片(2mg(2mg100#)100#)盒盒盒盒2009.06.302009.06.3015.0015.002002003000.003000.006 626822682 0902009020 爱活胆通胶囊爱活胆通胶囊(100(100粒粒) )盒盒盒盒2009.06.302009.06.3020.0020.002602605200.005200.007 726822682 05044050

23、44 5%5%葡萄糖注射液葡萄糖注射液(250ml)(250ml)瓶瓶箱箱2009.08.302009.08.305.005.00 100010005000.005000.008 826822682 0202302023 安体舒通片安体舒通片(20mg(20mg100#)100#)盒盒盒盒2010.08.302010.08.30 120.00120.0050506000.006000.009 926822682 1303413034 8484消毒液消毒液(500ml)(500ml)瓶瓶箱箱2010.10.302010.10.308.008.00100100800.00800.001010 26

24、822682 0701007010 安定片安定片(2.5mg(2.5mg100#)100#)瓶瓶瓶瓶2010.10.302010.10.30 150.00150.0020203000.003000.00-13-第第3 3章章 应用实例技巧应用实例技巧1 :n入库单单头入库单编号入库日期入库人员供应商名称联系人联系电话供应商电话地址邮编供应商开户行供应商银行账号总金额审核人审核日期入库单单目序号药品编码药品名称单位包装进价数量金额有效日期图图3.5 3.5 二级规范后的二级规范后的“入库单入库单”结构结构传递传递传递传递-14-第第3 3章章 应用实例技巧应用实例技巧1 :nn :11 :n入库

25、单单头入库单编号入库日期入库人员总金额审核人审核日期入库单单目序号进价数量有效日期药品资料档案药品编号药品名称单位包装供应商档案供应商名称联系人联系电话供应商电话地址邮编供应商开户行供应商银行账号图图3.6 3.6 三级规范化后的三级规范化后的 “ “入库单入库单”结构结构-15-第第3 3章章 应用实例技巧应用实例技巧特殊关系特殊关系v 当表自身和自己存在一对多关当表自身和自己存在一对多关系时,其一致性维护不能靠触系时,其一致性维护不能靠触发器机制实现。发器机制实现。v 对于存在一对一关系的两个表对于存在一对一关系的两个表可以合成一个表,但是当其中可以合成一个表,但是当其中的一个表出现大量的

26、空数据时,的一个表出现大量的空数据时,使用两个表能节约存储空间。使用两个表能节约存储空间。v 对于存在多对多关系的两个表,对于存在多对多关系的两个表,可以通过引进一个中间表将其可以通过引进一个中间表将其分解成两个一对多关系表。分解成两个一对多关系表。 关系例子见图。关系例子见图。Relation_0课程课程名称VA40学时N3学生学号VA20姓名VA10班级VA10图图3.10A 3.10A 多对多关系模型多对多关系模型-16-第第3 3章章 应用实例技巧应用实例技巧STUDENT_No = STUDENT_NoCOURSE_Name = COURSE_NameCOURSECOURSE_Nam

27、eVARCHAR2(40)COURSE_HoursNUMBER(3)STUDENTSTUDENT_NoVARCHAR2(20)STUDENT_NameVARCHAR2(10)STUDENT_ClassVARCHAR2(10)STCOURSESTUDENT_NoVARCHAR2(20)COURSE_NameVARCHAR2(40)Relation_2Relation_1课 程课 程 名 称VA40学 时N3学 生学 号VA20姓 名VA10班 级VA10学 生 选 课图图3.10B 3.10B 多对多关系模型多对多关系模型物理模型物理模型-17-第第3 3章章 应用实例技巧应用实例技巧系统界面系

28、统界面 入入库库单单的的单单头头 入入库库单单的的单单目目 供供应应商商档档案案 药药品品资资料料档档案案 图图3.12 3.12 药品入库单录入编辑药品入库单录入编辑 -18-第第3 3章章 应用实例技巧应用实例技巧3.2 3.2 数据加锁方法数据加锁方法3.2.1 3.2.1 相关概念相关概念事务事务 是用户定义的一组数据库操作序列,它是数据库的逻辑工作单位。是用户定义的一组数据库操作序列,它是数据库的逻辑工作单位。事务必须具有原子性、一致性、隔离性和持久性四个特性。事务必须具有原子性、一致性、隔离性和持久性四个特性。可串行化调度策略可串行化调度策略 让冲突操作串行执行,非冲突操作并行执行

29、。让冲突操作串行执行,非冲突操作并行执行。锁方式的基本思想锁方式的基本思想 事务对任何数据的操作必须先申请该数据项的锁,事务对任何数据的操作必须先申请该数据项的锁,只有申请到锁后,即加锁成功后,才可以对数据项进行操作。操作结只有申请到锁后,即加锁成功后,才可以对数据项进行操作。操作结束后,要释放已申请的锁。束后,要释放已申请的锁。两段锁协议(两段锁协议(2PL2PL协议)协议) 其基本思想是,任何事务对数据项的操作之其基本思想是,任何事务对数据项的操作之前先加锁,加锁的原则是事务中的全部加锁操作在第一个解锁操作之前先加锁,加锁的原则是事务中的全部加锁操作在第一个解锁操作之前完成,即加锁和解锁操

30、作分布在事务中的两个阶段。两段锁协议保前完成,即加锁和解锁操作分布在事务中的两个阶段。两段锁协议保证了并发调度的可串行化。证了并发调度的可串行化。-19-第第3 3章章 应用实例技巧应用实例技巧3.2.2 3.2.2 问题提出问题提出 信息系统的并发事务导致数据库死锁的主要原因是两个或多个进程信息系统的并发事务导致数据库死锁的主要原因是两个或多个进程长时间段内抢占同一数据资源,或者是两个进程在抢占对方已经占用长时间段内抢占同一数据资源,或者是两个进程在抢占对方已经占用的数据资源,而这一现象并非因为进程需要处理的事务非常复杂、耗的数据资源,而这一现象并非因为进程需要处理的事务非常复杂、耗时过长所

31、致,相反常常是因为信息系统前端应用程序的加锁机制不当时过长所致,相反常常是因为信息系统前端应用程序的加锁机制不当所引起的。所引起的。 3.2.3 3.2.3 三种加锁方法三种加锁方法连续申请资源法连续申请资源法 连续申请资源法连续申请资源法是当申请不到数据锁时持续等待申请数据锁的数据是当申请不到数据锁时持续等待申请数据锁的数据加锁方法。加锁方法。该方法的基本思想是在出现锁等待时并不夭折本事务,而该方法的基本思想是在出现锁等待时并不夭折本事务,而是继续不间断地申请表数据资源的锁,直到申请成功为止。是继续不间断地申请表数据资源的锁,直到申请成功为止。 按标识符排序法按标识符排序法 按标识符排序加锁

32、法按标识符排序加锁法是对所操作的所有数据先按照数据标识符进行是对所操作的所有数据先按照数据标识符进行排序,然后再依次申请锁的方法。排序,然后再依次申请锁的方法。随机等待法随机等待法 随机等待加锁法随机等待加锁法是对申请锁失败后夭折本次加锁过程,然后等待一是对申请锁失败后夭折本次加锁过程,然后等待一个随机时间后重新启动加锁过程的方法。个随机时间后重新启动加锁过程的方法。 -20-第第3 3章章 应用实例技巧应用实例技巧3.2.4 3.2.4 混合加锁法混合加锁法混合加锁法混合加锁法将按标识符排序加锁法和随机等待加锁法结合应用的一将按标识符排序加锁法和随机等待加锁法结合应用的一种加锁方法。种加锁方

33、法。/*boolean f_TablesLock(string tables)成功返回成功返回FALSE, 否则返回否则返回TRUE*/integer li_retf_SortTables(tables) /按标识符(数据库表)排序按标识符(数据库表)排序AGAIN:/进行一定次数加锁后检测进行一定次数加锁后检测IF f_tableslock_nowait(tables) THEN /加锁失败加锁失败 IF MessageBox(提示信息提示信息,继续加锁吗继续加锁吗?,YesNo!,1) = 1 THEN GOTO AGAIN /开始新的一轮加锁过程开始新的一轮加锁过程 ELSE RETUR

34、N TRUE END IFEND IFRETURN FALSE /加锁成功加锁成功-21-第第3 3章章 应用实例技巧应用实例技巧3.3 3.3 回滚与提示回滚与提示3.3.1 3.3.1 事务划分事务划分事务是一个对数据库的存取操作序列,是数据库应用程序的基本逻辑事务是一个对数据库的存取操作序列,是数据库应用程序的基本逻辑单元。单元。任何一个应用可以通过若干个事务来完成,而最终划分为多少个事务任何一个应用可以通过若干个事务来完成,而最终划分为多少个事务应根据业务的具体情况而定。应根据业务的具体情况而定。编程人员可以显式地定义事务的开始和结束。一个事务主体可以是一编程人员可以显式地定义事务的开

35、始和结束。一个事务主体可以是一条条SQLSQL语句、一组语句、一组SQLSQL语句或者整个应用程序。语句或者整个应用程序。在编程人员没有显式的定义事务的情况下,则由数据库管理系统按照在编程人员没有显式的定义事务的情况下,则由数据库管理系统按照缺省规定自动划分事务。缺省规定自动划分事务。3.3.2 3.3.2 事务恢复事务恢复数据库的恢复是通过建立冗余数据,然后利用这些冗余数据将数据库数据库的恢复是通过建立冗余数据,然后利用这些冗余数据将数据库中被破坏或不正确的数据恢复到障前的某个一致性状态。中被破坏或不正确的数据恢复到障前的某个一致性状态。建立冗余数据最常用的技术是数据转储或日志文件。建立冗余

36、数据最常用的技术是数据转储或日志文件。数据转储数据转储是定期将数据库复制到另一存储介质上保存起来的过程。是定期将数据库复制到另一存储介质上保存起来的过程。日志文件日志文件是用来记录事务对数据库更新的操作。是用来记录事务对数据库更新的操作。-22-第第3 3章章 应用实例技巧应用实例技巧3.3.3 3.3.3 事务与交互式操作事务与交互式操作IF SQLCA.SQLCode = 0 THEN COMMIT; MessageBox( 提示信息提示信息,操作成功!操作成功!);ELSE ROLLBACK; MessageBox( 错误信息错误信息,操作失败!操作失败!);END IF 容易死锁容易死

37、锁IF SQLCA.SQLCode = 0 THEN MessageBox( 提示信息提示信息,操作成功!操作成功!); COMMIT;ELSE MessageBox( 错误信息错误信息,操作失败!操作失败!); ROLLBACK; END IF -23-第第3 3章章 应用实例技巧应用实例技巧3.4 3.4 游标模板游标模板游标由查询结果集和结果集中指向特定记录的指针组成。游标由查询结果集和结果集中指向特定记录的指针组成。游标可以从含有多条数据记录的结果集中每次提取一条记录。游标可以从含有多条数据记录的结果集中每次提取一条记录。游标还提供对其指向的数据进行删除或更新功能。游标还提供对其指向的

38、数据进行删除或更新功能。游标的使用游标的使用v 在使用游标时,先要对其声明,并定义游标中的查询结构。在使用游标时,先要对其声明,并定义游标中的查询结构。v 再打开游标,这时游标声明中的再打开游标,这时游标声明中的SQLSQL查询语句被执行,游标指针指查询语句被执行,游标指针指向该查询结果集的第一条记录。向该查询结果集的第一条记录。v 然后通过然后通过FETCHFETCH语句提取结果集中的一条记录。每一次执行语句提取结果集中的一条记录。每一次执行FETCHFETCH语句后,游标的指针将自动指向结果集的下一条记录,并将当前语句后,游标的指针将自动指向结果集的下一条记录,并将当前的数据读入到变量中。

39、的数据读入到变量中。FETCHFETCH语句中变量的数量和数据类型必须与语句中变量的数量和数据类型必须与查询语句列的数量和数据类型一致。查询语句列的数量和数据类型一致。v 最后,当数据结果集中的所有数据处理完后,应该关闭游标。最后,当数据结果集中的所有数据处理完后,应该关闭游标。关闭游标后,所有与其相关的资源将被释放。对于关闭的游标可以再关闭游标后,所有与其相关的资源将被释放。对于关闭的游标可以再次通过次通过OPENOPEN语句打开。语句打开。打开的游标在未关闭之前,事务不能执行打开的游标在未关闭之前,事务不能执行COMMITCOMMIT或或ROLLBACKROLLBACK语句,因语句,因为该

40、语句可使打开游标为该语句可使打开游标OPENOPEN语句失效。语句失效。 -24-第第3 3章章 应用实例技巧应用实例技巧DECLARE C_Example CURSOR FOR ; /声明游标声明游标OPEN C_Example; /打开游标打开游标/打开游标错误判别,如果出错返回打开游标错误判别,如果出错返回-1IF f_Report_DBError() THEN RETURN -1DO WHILE TRUE /将结果集中的数据放入变量列表中,并推进游标指针下移将结果集中的数据放入变量列表中,并推进游标指针下移 FETCH C_Example INTO ; /利用利用SQLCode中的状态

41、信息决定何时退出循环中的状态信息决定何时退出循环 /当当SQLCode=-1时,操作错误;当时,操作错误;当SQLCode=100时,已取到结果集的末尾时,已取到结果集的末尾 IF SQLCA.SQLCode 0 THEN EXIT IF SQLCA.SQLCode 0 THEN EXITLOOPIF f_Report_DBError() THEN /如果出错,关闭游标并回滚事务如果出错,关闭游标并回滚事务 CLOSE C_Example; ROLLBACK; RETURN -1END IFCLOSE C_Example; /正常情况,关闭游标并提交事务正常情况,关闭游标并提交事务COMMIT

42、; -25-第第3 3章章 应用实例技巧应用实例技巧3.5 3.5 通知发布通知发布 通知发布通知发布是通是通过信息系统向用户过信息系统向用户传达必要的信息和传达必要的信息和执行相应功能的过执行相应功能的过程。程。通知发布的功通知发布的功能主要实现两个应能主要实现两个应用目的:监控系统用目的:监控系统当前的所有在线用当前的所有在线用户和向用户发布信户和向用户发布信息息 。数据库表设计数据库表设计在线用户进程号N10用户标识VA20用户名称VA20机器号VA100计算机名VA100组名VA100IP地址VA16最后刷新时间DT版本VA20状态VA10已收通知编号VA250记录日期DT备注VA25

43、0标记N1通知档案编号N10类型VA10标题VA40内容VA2000起始时间DT终止时间DT发布次数N2停机延迟时间N2状态VA10位置码N9发布人VA20发布时间DT备注VA250标记N1-26-第第3 3章章 应用实例技巧应用实例技巧记录用户登录信息记录用户登录信息 每个信息系统用户登录信息系统时,信息系统都要记录包括用户的每个信息系统用户登录信息系统时,信息系统都要记录包括用户的标识、用户名称、用户进程号、登录时间、用户状态等信息。标识、用户名称、用户进程号、登录时间、用户状态等信息。删除用户信息删除用户信息 每个信息系统用户退出信息系统时,信息系统都要删除该用户相应每个信息系统用户退出

44、信息系统时,信息系统都要删除该用户相应的登录记录。的登录记录。通知发布模块通知发布模块 v 对于对于“一般通知一般通知”类型的通知,当用户进入系统时,对于设定好类型的通知,当用户进入系统时,对于设定好的通知,即状态为的通知,即状态为“已发布已发布”的通知,通知将逐个显示后方可进的通知,通知将逐个显示后方可进入系统。如果用户进入后再设定好的通知,用户将在一定的时间入系统。如果用户进入后再设定好的通知,用户将在一定的时间间隔内(目前设置时长为间隔内(目前设置时长为1 1分钟)才能看到通知的内容。分钟)才能看到通知的内容。v 对于对于“暂停通知暂停通知”类型的通知,除发布该通知的用户外,其他用类型的通知,除发布该通知的用户外,其他用户将无法进入系统,在发布该通知前进入的用户也将必须退出。户将无法进入系统,在发布该通知前进入的用户也将必须退出。无论哪种情况进入系统的用户,将接收到如图无论哪种情况进入系统的用户,将接收到如图3.143.14所示(见书所示(见书P89 P89 )的界面,要么等待通知撤销后自动进入系统,要么直接退)的界面,要么等待通知撤销后自动进入系统,要么直接退出系统。出系统。-2

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论