智能网络复习自学版_第1页
智能网络复习自学版_第2页
智能网络复习自学版_第3页
智能网络复习自学版_第4页
智能网络复习自学版_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

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

文档简介

1、知识点概要1、 智能网络监控系统:现在流行的远程监控系统现场数据采集与远程监控并存,一般是采用现场总线技术将分布于各个设备的传感器、监控设备等连接起来,这样就从分立单元阶段进入了集成单元阶段,然后各个管理站点的服务再用局域网连接起来,这样就形成了一个监控现场的监控网络。然后通过Internet、GPRS 或者架设专线与远端的监控中心联网,从而实现远程监控系统。 实时监控系统结构示意图_ 数据库服务器安装Windows 2000 ADV Server 网络操作系统、SQL Server2000 关系型数据库软件,存储检测信息及加工信息等。_ 数据交换中心数据交换中心是一台装有数据代理应用软件的计

2、算机,能接收现场检测信息并存储于数据库,能转发检测中心发出的主动检测信号,是通信子系统的核心之一。_ 控制台控制台是一台装有管理软件的计算机,能显示被监控设备的运行情况,能对远端的数据采集器发送控制信号。控制台与数据交换中心可以是同一台计算机。_ 远地数据采集器远地数据采集器在检测现场采集实时数据,通过GPRS、Internet 把数据送至检测中心,接收来自检测中心的控制信号进行相应操作。2、 智能网络监控系统常用技术:基于Internet通信技术、GPRS 通信技术、数据库物理模型优化设计、通信加密技术、终端数据抗干扰采集技术、现场采集数据的及时响应处理技术,开发了一个C/S 结构的远程实时

3、监控系。原理:系统由远程数据采集子系统、通信子系统、监测中心子系统三部分组成。数据采集子系统通过分布式数据采集器采集远程监测点的检测信息;通信子系统通过Internet、GPRS 把检测信息送至监测中心子系统;监测中心子系统接收检测信息,并将检测信息保存到数据库,并分析统计设备运行状态,为上层决策提供基础数据。同时,监测中心子系统能主动发送控制信号(召唤),通过通信子系统把控制信号传送至检测现场指挥远端数据采集子系统采集设备信息。3、网络传感器技术:将网络接口芯片与智能传感器集成起来,并把通信协议固化到智能传感器的ROM 中,产生了网络传感器。网络传感器继承了智能传感器的全部功能,并且能够和计

4、算机网络进行通信,因而在现场总线控制系统中得到了广泛的应用成为现场级数字化传感器。4、典型的基于GPRS、Internet的监测系统的组成:软件组织结构图_ 监控软件对整个系统的运行的基础数据进行设置,从数据库读入预处理的现场监测信息并加工处理,把处理结果显示给监控人员,监控人员在此可以发出主动控制指令。采用C/S软件体系结构。_ 数据代理读入来自Internet 的现场监测信息并经预处理后存入数据库,从数据库读监控人员发出的主动控制指令并通过Internet 传送至于现场检测点。采用C/S软件体系结构。_ 数据采集采集检测现场设备运行信息,控制GPRG DTU 发送信息、接收指令。面向过程的

5、编程方式实现。GPRS DTU 全称GPRS 数据传输单元,在国内目前实际上对GPRS DTU 具有更加明确的约定:是专门用于将串口数据通过GPRS 网络进行传送的GPRS 无线设备)。5、C/S结构系统常用的开发工具:Client/Server(客户/服务器模式,简称C/S模式)和Browser/Server模式(浏览器/服务器模式,简称B/S 模式)。流行的编制C/S 体系结构软件的开发工具有Visual Basic、Delphi、PowerBuilder 等等。6、常见的Web服务器软件:Microsoft IIS、IBM WebSphere、BEA WebLogic、IPlanet A

6、pplication Server、Oracle IAS、Apache、Tomcat7、B/S结构系统常用的技术:流行的编制B/S 体系结构软件的开发工具有ASP 、java 、PHP、asp .NET8、C/S与B/S的比较: 1.C/S模式的优势:交互性强:在C/S 模式中,客户端有一套完整的应用程序,在出错提示、在线帮助等方面都有强大的功能,并且可以在子程序间自由切换;更安全的存取模式:由于C/S 模式是配对的点对点的结构模式,在C/S 模式的平台上可采用适用于局域网、安全性比较好的网络协议,安全性可以得到较好的保证。 2. B/S模式的优势:B/S是有计算技术以来最稳定的技术平台;B/

7、S本质上是一种客户机技术:Internet原则上取消了所有在客户机上的维护工作;B/S提供异种机、异种网、异种应用服务的联机、联网、统一服务的最现实的开放性基础。9、概述单片机前向通道:当将单片机用作测控系统时,前向通道是指被测信号的输入通道,对被测对象的信号的拾取其主要任务就是最忠实地反映被测对象的真实状态,它包括实时性与测量精度。同时使这些测量信号能满足计算机输入接口的电平要求。 单片机控制系统前向通道图示10、 概述传感器接口通道:单片机应用系统中的前向通道体现了被测对象与系统相互联系的信号输入通道,原始参数输入通道。由于在该通道中主要是传感器与传感器有关的信号调节、变换电路,故也可称为

8、传感器接口通道。11、传感器及传感器的作用: 是一种能把化学量和物理量转变成便于利用的电信号的器件,根据传感器工作原理,可分为物理传感器和化学传感器二大类。将被测信号量的微小变化转成电信号,是实现自动检测和自动控制的首要环节。12、 采样保持器: 采样器是一种开关电路或装置,它在固定时间点上取出被处理信号的值。作用:采样保持器则把这个信号值放大后存储起来,保持一段时间,以供模数转换器转换,直到下一个采样时间再取出一个模拟信号值来代替原来的值。在模数转换器工作期间采样保持器一直保持着转换开始时的输入值,因而能抑制由放大器干扰带来的转换噪声,降低模数转换器的孔径时间,提高模数转换器的精确度和消除转

9、换时间的不准确性。13、 后向通道的概念及后向通道的作用: 后向通道是计算机实现控制运算处理后,对控制对象的输出通道接口。功率驱动:将单片机输出信号进行功率放大,以满足伺服驱动的功率要求;干扰防治:主要防治伺服驱动系统通过信号通道电源以及空间电磁场对计算机系统的干扰。通常采用信号隔离电源隔离和对功率开关实现过零切换等方法进行干扰防治;数/模转换:对于二进制输出的数字量采用D/A变换器;对于频率量输出则可以采用F/V(频率/电压)转换器变换成模拟量。14、 概述单片机应用系统的各种抗干扰设计: 单片机的抗干扰设计通常分为硬件抗干扰设计和软件抗干扰设计两部分。 单片机应用系统的硬件抗干扰设计:要选

10、择抗干扰性能强的CPU 外和考虑外围电路的抗干扰设计。1.供电系统的抗干扰设计:使用交流稳压器、变压器初次级用屏蔽层隔离、低通滤波器可滤去干扰带来的高次谐波、整个系统采用分立式供电方式,分别对各部分进行供电、采用开关电源并提供足够的功率余量、SRAM(静态随机存取存储器)掉电保护;2.过程通道的抗干扰设计:光电耦合隔离、双绞线传输、长线传输的阻抗匹配;3.印制电路板的抗干扰设计:印制电路板大小要适中、器件布置时把相关的器件就近放置,易产生噪声的电路应尽量远离主机电路,发热量大的器件应考虑散热问题,I/O 驱动器件尽量靠近印制板边上放置。闭置的IC 管脚不要悬空,元器件脚避免相互平行,以减少寄生

11、耦合。如有可能,尽量使用贴片元件、布线时电路之间的连接应尽量短、接地时交流地与信号地不能共用、在印制电路板的关键部位加去耦电容提供系统的抗干扰能力。4.其它的抗干扰设计:将易干扰的电路或设备(或辐射源)等屏蔽起来、系统可以浮置(如信号地不接机壳或大地)来阻断干扰电流的通路,设备内部具有辐射能力的电路要独立远置,以减少对其他电路的影响、把整个CPU 控制电路,采用金属机箱,做好接地接地电阻不小于4欧姆;保证没有空间干扰的串入、所有机箱对外的接口,使用光电隔离、420mA 电流环路,或者平衡信号传输,没有公共的信号地,保证没有干扰由控制线路串入、尽量采用无触点的固态继电器、控制设备尽量远离执行机构

12、。 单片机应用系统的软件抗干扰设计:1.超值滤波法:若单片机对输入信号相邻两次采样的差值小于等于最大偏差值,则本次采样值视为有效,并加以保存;2.平均值法:对于一个数据连续采样几次, 剔除个别错误数据,计算平均值,以平均值作为采样的结果;3.中值法:根据干扰造成采样数据偏大或偏小的情况,对1 个采样点连续采集多个信号,进行比较,取中值作为采样结果;4.比较舍去法:从每个采样点的n 个连续采样数据中,按确定的舍去方法来剔除偏差数据;5.RAM 数据冗余:即将欲保护的数据写入RAM中的不同区域;6.软件冗余:提供足够的冗余信息和算法程序,使系统在实际运行时能够及时发现程序设计错误,采取补救措施;7

13、.指令冗余:在关键的地方人为地插入一些单字节指令(NOP),或将有效单字节指令和重要的控制指令重复书写;8.软件陷阱的设计:软件陷阱是指用来将捕获的跑飞程序引向复位入口或错误处理程序入口地址的几条指令NOPNOPLJMP 0000H(或LJMP ERROR, ERROR为错误处理程序的入口标号)为防止干扰导致未使用的中断被异常开放,对于未使用的中断服务程序则可以这样:NOPNOPPUSH 00HPUSH 00HRETI9.看门狗”技术:通过不断检测程序循环运行时间,若发现程序循环时间超过最大循环运行时间,则认为系统陷入“死循环”,需进行出错处理。在不影响程序功能的情况下,还可以利用单片机的“待

14、机”工作方式来实现抗干扰。15、了解单片机应用系统的软硬件抗干扰设计都有哪些:如上所述16、单片机控制系统的典型抗干扰供电系统: 供电系统的抗干扰设计:使用交流稳压器、变压器初次级用屏蔽层隔离、低通滤波器可滤去干扰带来的高次谐波、整个系统采用分立式供电方式,分别对各部分进行供电、采用开关电源并提供足够的功率余量、SRAM(静态随机存取存储器)掉电保护。17、主流数据库有哪些:Sybase,Oracle,Informix,SQL Server,DB2。18、概述主键约束: 表中经常有一个列或列的组合,其值能唯一地标识表中的每一行。这样的一列或多列称为表的主键(PRIMARY KEY,PK),一个

15、表只能有一个PK 约束,而且PK约束中的列不能接受空值,如果PK 约束定义在不止一列上,则一列中的值可以重复,但PK 约束定义中的所有列的组合的值必须唯一。19、 概述主键与外键的关系: 外键:通过将保存表中主键值的一列或多列添加到另一个表中,可创建两个表之间的链接。这个列就成为第二个表的外键。FOREIGN KEY 约束并不仅仅只可以与另一表的PRIMARY KEY 约束相链接,它还可以定义为引用另一表的UNIQUE 约束。FOREIGN KEY 约束不允许空值,但是,如果任何组合FOREIGN KEY 约束的列包含空值,则将跳过FOREIGN KEY 约束的校验。FOREIGN KEY 约

16、束的主要目的是控制存储在外键表中的数据,其次它还可以控制对主键表中数据的修改。FOREIGN KEY 约束的主要目的是控制存储在外键表中的数据,其次它还可以控制对主键表中数据的修改,确保引用完整性。20、存储过程:在使用SQL Server 2000 创建应用程序时,程序在SQL Server中存储为存储过程,并创建执行存储过程并处理结果的应用程序。存储过程不返回取代其名称的值,也不能直接用在表达式中。存储过程定义包含两个主要组成部分:过程名称及其参数的说明,以及过程的主体(其中包含执行过程操作的Transact-SQL 语句)。 创建存储过程时,应指定: 所有输入参数和向调用过程或批处理返回

17、的输出参数。 执行数据库操作(包括调用其它过程)的编程语句。 返回至调用过程或批处理以表明成功或失败(以及失败原因)的状态值。 不要创建以sp_为前缀的存储过程,系统存储过程在master 数据库中创建并存储,带有sp_前缀。#表示本地临时存储过程,#表示全局临时存储过程。SQL Server 关闭后,这些过程将不再存在。存储过程也可通过OUTPUT参数将值返回至调用程序。一个存储过程可有多达2100 个参数,每个参数都有名称、数据类型、方向和默认值。存储过程名称必须以单个字符开头。 如果存储过程my_proc 应有三个命名为first、second 和third 的参数,则可将传递至该存储过

18、程的值赋予参数名称,如: EXECUTE my_proc second=2, first=1, third=3 或者按照位置传递,而不命名参数名称: EXECUTE my_proc 1, 2, 3存储过程中的参数要定义数据类型,数据类型cursor 只能用作OUTPUT 参数。当调用存储过程的程序执行该存储过程时,所有过程参数都可接收输入值。 示例:下列存储过程get_sales_for_title使用了输入参数。该存储过程中的title 参数接收调用程序所指定的书名作为输入值。SELECT 语句使用此title 参数获得正确的ytd_sales 值并显示该值。存储过程中参数的最大数目为210

19、0。根据可用内存的不同,存储过程的最大大小可达128MB。CREATE PROCEDURE get_sales_for_titletitle varchar(80) - This is the input parameter.AS- Get the sales for the specified title.SELECT "YTD_SALES" = ytd_salesFROM titlesWHERE title = titleRETURNGO 执行该存储过程时,如果未指定其它值,则使用默认值。可以指定NULL 作为参数的默认值,并在未提供参数值而执行存储过程的情况下,使存储

20、过程返回一条自定义消息。如果默认值是包含嵌入空格或标点符号的字符串,或者以数字开头(例如,6xxx),那么该默认值必须用直的单引号引起来。下例显示在未提供title 参数值的情况下执行存储过程时,get_sales_for_title 过程将进行特殊处理。CREATE PROCEDURE get_sales_for_titletitle varchar(80) = NULL, - NULL default valueytd_sales int OUTPUTAS- Validate the title parameter.IF title IS NULLBEGINPRINT 'ERROR

21、: You must specify a title value.'RETURNEND- Get the sales for the specified title and- assign it to the output parameter.SELECT ytd_sales = ytd_salesFROM titlesWHERE title = titleRETURNGO执行程序示范及结果:EXECUTE my_proc - No parameters suppliedGO显示:NULL 2 3EXECUTE my_proc 10, 20, 30 - All parameters s

22、uppliedGO显示:10 20 30EXECUTE my_proc second = 500 - Only second parameter supplied by nameGO显示:NULL 500 3EXECUTE my_proc 40, third = 50 - Only first and third parametersGO - are supplied.显示:40 2 50假如:Mary 拥有表marytab,如果她希望其他用户能够执行使用该表的存储过程,必须在该表用于上述某一条语句时对其表名进行限定。此规则是必需的,因为运行存储过程时将解析对象的名称。如果未限定marytab

23、,而John 试图执行该过程,SQL Server 将查找John 所拥有的名为marytab的表。WITH ENCRYPTION 用于加密,所有人都无法查看存储过程定义。A. 创建使用参数的存储过程下例创建一个在pubs 数据库中很有用的存储过程。给出一个作者的姓和名,该存储过程将显示该作者的每本书的标题和出版商。CREATE PROC au_info lastname varchar(40), firstname varchar(20)ASSELECT au_lname, au_fname, title, pub_nameFROM authors INNER JOIN titleautho

24、r ON authors.au_id = titleauthor.au_idJOIN titles ON titleauthor.title_id = titles.title_idJOIN publishers ON titles.pub_id = publishers.pub_idWHERE au_fname = firstnameAND au_lname = lastnameGO将出现一条说明该命令未返回任何数据也未返回任何行的消息,这表示已创建该存储过程。现在执行au_info 存储过程:EXECUTE au_info Ringer, AnneGO下面是结果集:au_lname au_

25、fname title pub_name- - - -Ringer Anne The Gourmet Microwave Binnet & HardleyRinger Anne Is Anger the Enemy? New Moon Books(2 row(s) affected)B. 创建使用参数默认值的存储过程下例创建一个存储过程pub_info2,该存储过程显示作为参数给出的出版商所出版的某本书的作者姓名。如果未提供出版商的名称,该存储过程将显示由Algodata Infosystems出版的书籍的作者。CREATE PROC pub_info2 pubname varchar

26、(40) = 'Algodata Infosystems'ASSELECT au_lname, au_fname, pub_nameFROM authors a INNER JOIN titleauthor ta ON a.au_id = ta.au_idJOIN titles t ON ta.title_id = t.title_idJOIN publishers p ON t.pub_id = p.pub_idWHERE pubname = p.pub_name执行未指定参数的 pub_info2:EXECUTE pub_info2GO下面是结果集:au_lname au_

27、fname pub_name- - -Green Marjorie Algodata InfosystemsBennet Abraham Algodata InfosystemsO'Leary Michael Algodata InfosystemsMacFeather Stearns Algodata InfosystemsStraight Dean Algodata InfosystemsCarson Cheryl Algodata InfosystemsDull Ann Algodata InfosystemsHunter Sheryl Algodata InfosystemsL

28、ocksley Charlene Algodata Infosystems(9 row(s) affected)C. 执行用显式值替代参数默认值的存储过程在下例中,存储过程showind2 的table 参数默认值是titles。CREATE PROC showind2 table varchar(30) = 'titles'ASSELECT TABLE_NAME = ,INDEX_NAME = , INDEX_ID = indidFROM sysindexes INNER JOIN sysobjects ON sys

29、objects.id = sysindexes.idWHERE = table列标题(例如,TABLE_NAME)可使结果更具可读性。下面是该存储过程显示的authors 表的情况:EXECUTE showind2 authorsGOTABLE_NAME INDEX_NAME INDEX_ID- - -authors UPKCL_auidind 1authors aunmind 2(2 row(s) affected)如果用户未提供值,则SQL Server 将使用默认表titles:EXECUTE showind2GO下面是结果集:TABLE_NAME IND

30、EX_NAME INDEX_ID- - -titles UPKCL_titleidind 1titles titleind 2(2 row(s) affected)D. 使用参数默认值 NULL 创建存储过程参数默认值可以是NULL 值。在这种情况下,如果未提供参数,则SQL Server 将根据存储过程的其它语句执行存储过程。不会显示错误信息。过程定义还可指定当不给出参数时要采取的其它某种措施。例如:CREATE PROC showind3 table varchar(30) = NULLAS IF table IS NULLPRINT 'Give a table name'

31、ELSESELECT TABLE_NAME = ,INDEX_NAME = , INDEX_ID = indidFROM sysindexes INNER JOIN sysobjectsON sysobjects.id = sysindexes.idWHERE = tableE. 使用包含通配符的参数默认值创建存储过程如果存储过程将参数用于LIKE 关键字,那么默认值可包括通配符(%、_、和)。例如,可将showind修改为当不提供参数时显示有关系统表的信息:CREATE PROC showind4 t

32、able varchar(30) = 'sys%'AS SELECT TABLE_NAME = ,INDEX_NAME = , INDEX_ID = indidFROM sysindexes INNER JOIN sysobjectsON sysobjects.id = sysindexes.idWHERE LIKE table在存储过程au_info 的下列变化形式中,两个参数都有带通配符的默认值:CREATE PROC au_info2 lastname varchar(30) =

33、'D%',firstname varchar(18) = '%'ASSELECT au_lname, au_fname, title, pub_nameFROM authors INNER JOIN titleauthor ON authors.au_id = titleauthor.au_idJOIN titles ON titleauthor.title_id = titles.title_idJOIN publishers ON titles.pub_id = publishers.pub_idWHERE au_fname LIKE firstnameAN

34、D au_lname LIKE lastname如果执行au_info2 时不指定参数,将显示姓以字母D 开头的所有作者:EXECUTE au_info2GO下面是结果集:au_lname au_fname title pub_name- - - -Dull Ann Secrets of Silicon Val Algodata Infosystemsdel Castillo Innes Silicon Val Gastrono Binnet & HardleyDeFrance Michel The Gourmet Microwave Binnet & Hardley(3 ro

35、w(s) affected)从存储过程中返回数据:1. 使用OUTPUT参数返回数据示例显示有一个输入参数和一个输出参数的存储过程。存储过程中的第一个参数title将接收由调用程序指定的输入值,而第二个参数ytd_sales 将向调用程序返回该值。SELECT 语句使用title 参数以获得正确的ytd_sales 值,并将该值赋予ytd_sales 输出参数。CREATE PROCEDURE get_sales_for_titletitle varchar(80), - This is the input parameter.ytd_sales int OUTPUT - This is th

36、e output parameter.AS- Get the sales for the specified title and- assign it to the output parameter.SELECT ytd_sales = ytd_salesFROM titlesWHERE title = titleRETURNGO下列程序用输入参数值执行存储过程,并将存储过程的输出值保存到调用程序的局部变量ytd_sales_for_title 中。- Declare the variable to receive the output value of the procedure.DECLA

37、RE ytd_sales_for_title int- Execute the procedure with a title_id value- and save the output value in a variable.EXECUTE get_sales_for_title"Sushi, Anyone?", ytd_sales = ytd_sales_for_title OUTPUT- Display the value returned by the procedure.PRINT 'Sales for "Sushi, Anyone?":

38、 ' + convert(varchar(6),ytd_sales_for_title)GOSales for "Sushi, Anyone?": 4095使用返回代码返回数据存储过程可返回一个称为返回代码的整型值,以表明过程的执行状态。使用RETURN 语句指定存储过程的返回代码。与OUTPUT 参数一样,执行存储过程时必须将返回代码保存到变量中,以便在调用程序中使用返回代码值。例如,使用int 数据类型的赋值变量result 保存存储过程my_proc 的返回代码:DECLARE result intEXECUTE result = my_proc返回代码通常用

39、在存储过程内的控制流块中,以便为每种可能的错误状况设置返回代码值。可在Transact-SQL 语句后使用ERROR 函数,以检测是否在该语句的执行期间有错误发生。A. 根据错误类型返回不同的返回代码下例显示带有特殊处理的过程get_sales_for_title,该过程将为各种错误设置特殊的返回代码值。表5-7 显示该存储过程向每种可能的错误所赋予的整型值。 各种错误返回代码值 值 含义 0 成功执行。 1 未指定所需的参数值。 2 指定的参数值无效。 3 获得销售值时出现错误。 4 发现销售值为NULL 的书名。CREATE PROCEDURE get_sales_for_title- T

40、his is the input parameter, with a default.title varchar(80) = NULL,- This is the output parameter.ytd_sales int OUTPUTAS- Validate the title parameter.IF title IS NULLBEGINPRINT "ERROR: You must specify a title value."RETURN(1)ENDELSEBEGIN- Make sure the title is valid.IF (SELECT COUNT(*)

41、 FROM titlesWHERE title = title) = 0RETURN(2)END- Get the sales for the specified title and- assign it to the output parameter.SELECT ytd_sales = ytd_salesFROM titlesWHERE title = title- Check for SQL Server errors.IF ERROR <> 0BEGINRETURN(3)ENDELSEBEGIN- Check to see if the ytd_sales value is

42、 NULL.IF ytd_sales IS NULLRETURN(4)ELSE- SUCCESS!RETURN(0)ENDGO以这种方法使用返回代码,将使调用程序得以检测和处理执行存储过程时发生的错误。B.处理从存储过程返回的不同返回代码下例创建处理从get_sales_for_title 过程返回的返回代码的程序。- Declare the variables to receive the output value and return code- of the procedure.DECLARE ytd_sales_for_title int, ret_code INT- Execute

43、the procedure with a title_id value- and save the output value and return code in variables.EXECUTE ret_code = get_sales_for_title"Sushi, Anyone?",ytd_sales = ytd_sales_for_title OUTPUT- Check the return codes.IF ret_code = 0BEGINPRINT "Procedure executed successfully"- Display t

44、he value returned by the procedure.PRINT 'Sales for "Sushi, Anyone?": ' + CONVERT(varchar(6),ytd_sales_for_title)ENDELSE IF ret_code = 1PRINT "ERROR: No title_id was specified."ELSE IF ret_code = 2PRINT "ERROR: An invalid title_id was specified."ELSE IF ret_code

45、 = 3PRINT "ERROR: An error occurred getting the ytd_sales."GO这个例子创建了一个存储过程,过程中第一个和第三个参数为默认值。当运行该过程时,如果调用时没有传递值或者指定了默认值,这些默认值就会赋给第一个和第三个参数。注意 DEFAULT 关键字有多种使用方法。USE pubsIF EXISTS (SELECT name FROM sysobjectsWHERE name = 'proc_calculate_taxes' AND type = 'P')DROP PROCEDURE pr

46、oc_calculate_taxesGO- Create the stored procedure.CREATE PROCEDURE proc_calculate_taxes (p1 smallint = 42, p2 char(1),p3 varchar(8) = 'CAR')ASSELECT *FROM mytableproc_calculate_taxes 存储过程可以以多种组合方式执行:EXECUTE proc_calculate_taxes p2 = 'A'EXECUTE proc_calculate_taxes 69, 'B'EXEC

47、UTE proc_calculate_taxes 69, 'C', 'House'EXECUTE proc_calculate_taxes p1 = DEFAULT, p2 = 'D'EXECUTE proc_calculate_taxes DEFAULT, p3 = 'Local', p2 = 'E'EXECUTE proc_calculate_taxes 69, 'F', p3 = DEFAULTEXECUTE proc_calculate_taxes 95, 'G', DEFA

48、ULTEXECUTE proc_calculate_taxes DEFAULT, 'H', DEFAULTEXECUTE proc_calculate_taxes DEFAULT, 'I', p3 = DEFAULT简述使用存储过程的优势有:1.允许模块化程序设计:只需创建过程一次并将其存储在数据库中,以后即可在程序中调用该过程任意次;2.允许更快执行:如果某操作需要大量Transact-SQL 代码或需重复执行,存储过程将比Transact-SQL 批代码的执行要快;3.减少网络流量:一个需要数百行Transact-SQL 代码的操作由一条执行过程代码的单独语

49、句就可实现,而不需要在网络中发送数百行代码;4.可作为安全机制使用:即使对于没有直接执行存储过程中语句的权限的用户,也可授予他们执行该存储过程的权。21、触发器:触发器是一种特殊类型的存储过程,它在指定的表中的数据发生变化时自动生效,在用户试图对指定的表执行指定的数据修改语句时自动执行,触发器常常用于强制业务规则和数据完整性。语法CREATE TRIGGER trigger_nameON table | view WITH ENCRYPTION FOR | AFTER | INSTEAD OF INSERT , UPDATE WITH APPEND NOT FOR REPLICATION AS

50、 IF UPDATE ( column ) AND | OR UPDATE ( column ) .n | IF ( COLUMNS_UPDATED ( ) bitwise_operator updated_bitmask ) comparison_operator column_bitmask .n sql_statement .n A. 使用带有提醒消息的触发器当有人试图在titles 表中添加或更改数据时,下例将向客户端显示一条消息。消息50009 是sysmessages 中的用户定义消息。有关创建用户定义消息的更多信息,请参见sp_addmessage。USE pubsIF EXIS

51、TS (SELECT name FROM sysobjectsWHERE name = 'reminder' AND type = 'TR')DROP TRIGGER reminderGOCREATE TRIGGER reminderON titlesFOR INSERT, UPDATEAS RAISERROR (50009, 16, 10)GOB. 使用带有提醒电子邮件的触发器当titles 表更改时,下例将电子邮件发送给指定的人员(MaryM)。USE pubsIF EXISTS (SELECT name FROM sysobjectsWHERE name

52、= 'reminder' AND type = 'TR')DROP TRIGGER reminderGOCREATE TRIGGER reminderON titlesFOR INSERT, UPDATE, DELETEASEXEC master.xp_sendmail 'MaryM','Don''t forget to print a report for the distributors.'GOC. 在 employee 和 jobs 表之间使用触发器业务规则由于CHECK 约束只能引用定义了列级或表级约束的列

53、,表间的任何约束(在下例中是指业务规则)都必须定义为触发器。下例创建一个触发器,当插入或更新雇员工作级别(job_lvls)时,该触发器检查指定雇员的工作级别(由此决定薪水)是否处于为该工作定义的范围内。若要获得适当的范围,必须引用jobs表。USE pubsIF EXISTS (SELECT name FROM sysobjectsWHERE name = 'employee_insupd' AND type = 'TR')DROP TRIGGER employee_insupdGOCREATE TRIGGER employee_insupdON employ

54、eeFOR INSERT, UPDATEAS/* Get the range of level for this job type from the jobs table. */DECLARE min_lvl tinyint,max_lvl tinyint,emp_lvl tinyint,job_id smallintSELECT min_lvl = min_lvl,max_lvl = max_lvl,emp_lvl = i.job_lvl,job_id = i.job_idFROM employee e INNER JOIN inserted i ON e.emp_id = i.emp_id

55、JOIN jobs j ON j.job_id = i.job_idIF (job_id = 1) and (emp_lvl <> 10)BEGINRAISERROR ('Job id 1 expects the default level of 10.', 16, 1)ROLLBACK TRANSACTIONENDELSEIF NOT (emp_lvl BETWEEN min_lvl AND max_lvl)BEGINRAISERROR ('The level for job_id:%d should be between %d and %d.',16, 1, job_id, min_lvl, max_lvl)ROLLBACK TRANSACTIONENDD. 使用延迟名称解析下例创建两个触发器以说明延迟名称解析。USE pu

温馨提示

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

评论

0/150

提交评论