第7章 存储过程、触发器和用户自定义函数
- 格式:pdf
- 大小:246.49 KB
- 文档页数:20
存储过程需要单独执行;函数可以随处调用。
存储过程是保存起来的可以接受和返回用户提供的参数的Transact-SQL 语句的集合。
可以创建一个过程供永久使用,或在一个会话中临时使用(局部临时过程),或在所有会话中临时使用(全局临时过程)。
也可以创建在Microsoft® SQL Server™ 启动时自动运行的存储过程。
用户定义函数,它是返回值的已保存的Transact-SQL 例程。
用户定义函数不能用于执行一组修改全局数据库状态的操作。
与系统函数一样,用户定义函数可以从查询中唤醒调用。
也可以像存储过程一样,通过 EXECUTE 语句执行。
本质上没区别。
只是函数有如:只能返回一个变量的限制。
而存储过程可以返回多个。
而函数是可以嵌入在sql中使用的,可以在select中调用,而存储过程不行。
执行的本质都一样。
函数限制比较多,比如不能用临时表,只能用表变量.还有一些函数都不可用等等.而存储过程的限制相对就比较少由于我现在基本上是DBA的工作,因此平时也看一些数据库方面的书籍。
但是我一直对存储过程和函数之间的区别掌握不透。
我向来认为存储过程可以实现的操作,函数也一样可以实现。
最近,刚好大学的老师给我们上SQL-Server的课程,我对这个问题的疑惑终于慢慢解开。
今天晚上顺便看了些网上的资料,觉得以下分析比较合理:1. 一般来说,存储过程实现的功能要复杂一点,而函数的实现的功能针对性比较强。
2. 对于存储过程来说可以返回参数,而函数只能返回值或者表对象。
3. 存储过程一般是作为一个独立的部分来执行,而函数可以作为查询语句的一个部分来调用,由于函数可以返回一个表对象,因此它可以在查询语句中位于FROM关键字的后面。
4. 当存储过程和函数被执行的时候,SQL Manager会到procedure cache中去取相应的查询语句,如果在procedure cache里没有相应的查询语句,SQL Manager就会对存储过程和函数进行编译。
第1章数据库概述1.填空题(1)Oracle(2)U 1U 2U 4U(3)体积小、安装成本低、速度快、源码开放(4)Memcached、Redis、mongoDB(5)大、中、小型网站中2.选择题(1)A(2)B(3)A(4)A(5)D3.简答题(1)常见的关系型数据库有MySQL、Oracle、SQL Server和Access数据库。
MySQL数据库主要应用在广泛地应用到互联网上的大、中、小型网站中;Oracle数据库主要应用在传统大企业、政府机构、金融机构、证券机构等;SQL Server数据库主要应用在部分电商和使用Windows 服务器平台的企业;Access数据库早期应用于小型程序系统ASP + Access、系统留言板、校友录等。
(2)关系型数据库按照结构化的方法存储数据,具备纵向扩展能力,采用结构化查询语言,强调ACID规则,强调数据的强一致性,可以控制事务原子性细粒度,并且一旦操作有误或者有需要,可以回滚事务。
非关系型数据库不需要固定的表结构,一般情况下也不存在对数据的连续操作。
不同点:关系型数据库使用表结构,非关系型的数据库格式灵活。
关系型数据库支持SQL语言,支持事务,非关系型数据库不提供SQL语言,无事务处理。
相对于关系型数据库,非关系型数据库在大数据存取上具备无法比拟的性能优势。
(3)应该注意MySQL的版本和开发人员使用的版本。
第2章环境的安装与基本配置1.填空题(1)Ubuntu CentOS Red Hat(2)RPM包二进制包源码包(3)仅主机模式NAT模式桥接模式(4)数据库语言(5)Mysqladmin、mysqldump等命令2.选择题(1)A(2)B(3)B(4)D(5)D3.简答题(1)在企业中应该使用源码编译方式安装MySQL,使用源码安装在编译安装过程可以设定参数,按照需求,进行安装,并且安装的版本,可以自己选择,灵活性比较大。
(2)VMware虚拟平台提供3种网络模式。
触发器与存储过程触发器(Trigger)是数据库中的一种特殊对象,它与一些特定的数据库事件相关联,并且当这个事件发生时,触发器可以在自动执行的过程中被触发。
而存储过程(Stored Procedure)则是一段预先编译好的SQL 语句的集合,它可以被保存在数据库服务器端,通过调用来执行。
触发器和存储过程都是数据库中的重要组件,它们都可以用于实现数据的自动化处理和一些复杂的业务逻辑。
但是它们在功能和使用方法上有一些不同之处。
首先,触发器的触发条件是事先设置好的,当该条件满足时才会被触发执行,而存储过程是主动调用执行的。
触发器通常与数据库中的表相关联,并且在表上的插入、更新或删除等事件发生时触发。
存储过程可以在任何时候被调用执行,无论是否有其他数据库事件发生。
其次,触发器通常用于实现数据的自动化处理,比如在插入新纪录时通过触发器自动计算一些字段的值,或者在删除记录时触发器做一些相关操作。
而存储过程则更倾向于实现业务逻辑的封装和复用,比如在一个库存管理系统中,可以使用存储过程来实现添加商品、修改商品信息、删除商品等操作。
此外,触发器由数据库引擎直接管理,它是与数据库表密切相关的一种对象,所以当表被删除或者修改时,相关联的触发器也会相应地被删除或修改。
而存储过程则是作为独立于表的对象存在,当数据库表被删除或修改时,存储过程不受影响。
在使用上,触发器和存储过程都可以用于实现一些相同的功能,但触发器更适合于在特定的数据库事件发生时执行自动化的操作,而存储过程更适合于实现复杂的业务逻辑和一些需要主动调用的场景。
总之,触发器和存储过程都是数据库中的重要组件,它们可以用于实现一些自动化的处理和复杂的业务逻辑。
它们在功能和使用方法上有一些不同之处,需要根据具体的需求来选择和使用。
MySQL中的自定义函数与存储过程的开发与调试1. 引言在数据库开发中,自定义函数和存储过程是非常重要的工具。
它们可以简化复杂的业务逻辑,提高查询和处理数据的效率。
本文将通过介绍MySQL中自定义函数和存储过程的开发与调试,帮助读者深入了解和掌握这两个功能的使用方法。
2. 自定义函数的开发与调试自定义函数是MySQL中的一个强大特性,它允许开发者自己定义并使用自己的函数。
在开发过程中,我们可以使用一些内置函数,如COUNT、SUM等,但有时候我们需要实现一些特定的功能,这时自定义函数就派上用场了。
在MySQL中,自定义函数的开发主要包括以下几个步骤:2.1 创建函数在MySQL中,可以使用CREATE FUNCTION语句来创建函数。
例如,我们希望实现一个函数,计算两个整数的和,可以使用以下语句: CREATE FUNCTION addTwoIntegers(a INT, b INT) RETURNS INTBEGINDECLARE result INT;SET result = a + b;RETURN result;END;在上述代码中,我们创建了一个名为addTwoIntegers的函数,它接受两个整数类型的参数,并返回一个整数类型的值。
函数体部分采用BEGIN...END包围起来,其中使用DECLARE语句声明了一个变量result,并使用SET语句给result 赋值。
最后,使用RETURN语句返回计算结果。
2.2 调用函数完成函数的创建后,我们可以通过SELECT语句来调用这个函数。
例如,我们想计算两个整数10和20的和,可以使用以下语句:SELECT addTwoIntegers(10, 20);执行以上语句后,MySQL会返回计算结果30。
2.3 调试函数在函数开发的过程中,我们可能会遇到一些错误或逻辑问题。
为了方便调试,MySQL提供了一些调试工具和技巧。
例如,我们可以使用SELECT语句打印中间变量的值,以检查函数的执行过程。
存储过程、触发器和用户自定义函数实验实验内容一练习教材中存储过程、触发器和用户自定义函数的例子。
教材中的BookSales数据库,在群共享中,文件名为BookSales.bak。
实验内容二针对附件1中的教学活动数据库,完成下面的实验内容。
1、存储过程(1)创建一个存储过程,该存储过程统计“高等数学”的成绩分布情况,即按照各分数段统计人数。
执行存储过程:exec countpeople(2)创建一个存储过程,该存储过程有一个参数用来接收课程号,该存储过程统计给定课程的平均成绩。
执行存储过程:exec avg_score'C602'(3)创建一个存储过程,该存储过程将学生选课成绩从百分制改为等级制(即A、B、C、D、E)。
执行存储过程:exec alterscore(4)创建一个存储过程,该存储过程有一个参数用来接收学生姓名,该存储过程查询该学生的学号以及选修课程的门数。
执行存储过程:exec select_courses'李强'(5)创建一个存储过程,该存储过程有两个输入参数用来接收学号和课程号,一个输出参数用于获取相应学号和课程号对应的成绩。
执行存储过程:declare@score smallintexec select_socre'98601','C602',@score outputprint'成绩是'+convert(char(2),@score)+'分'2、触发器(1)为study表创建一个UPDATE触发器,当更新成绩时,要求更新后的成绩不能低于原来的成绩。
创建完触发器尝试进行更新数据:update study set score=60 where sno='98601'and cno='C601'执行完之后查询结果发现成绩仍然是90select score from study where sno='98601'and cno='C601'再更新一个高于90分的成绩则可以成功update study set score=91 where sno='98601'and cno='C601'select score from study where sno='98601'and cno='C601'(2)为study表创建一个DELETE触发器,要求一次只能从study表中删除一条记录。
mysql的存储过程和函数MySQL的存储过程和函数是数据库中非常重要的两个概念,它们可以帮助我们更加高效地管理和操作数据库。
在本文中,我们将详细介绍MySQL的存储过程和函数,包括它们的定义、使用方法以及优缺点等方面。
一、MySQL的存储过程1. 定义MySQL的存储过程是一组预编译的SQL语句,它们被存储在数据库中,并可以被多次调用。
存储过程可以接受参数,并且可以返回结果集或者输出参数。
2. 使用方法创建存储过程的语法如下:CREATE PROCEDURE procedure_name ([IN|OUT|INOUT] parameter_name data_type [, ...])BEGIN-- 存储过程的SQL语句END;其中,procedure_name是存储过程的名称,parameter_name是存储过程的参数名称,data_type是参数的数据类型。
IN表示输入参数,OUT表示输出参数,INOUT表示既是输入参数又是输出参数。
调用存储过程的语法如下:CALL procedure_name ([parameter_value, ...]);其中,procedure_name是存储过程的名称,parameter_value是存储过程的参数值。
3. 优缺点存储过程的优点在于:(1)提高了数据库的性能,因为存储过程是预编译的,可以减少SQL语句的解析和编译时间。
(2)提高了数据库的安全性,因为存储过程可以控制对数据库的访问权限。
(3)提高了代码的可维护性,因为存储过程可以被多次调用,可以减少代码的重复性。
存储过程的缺点在于:(1)需要学习存储过程的语法和使用方法。
(2)存储过程的调试和测试比较困难。
二、MySQL的函数1. 定义MySQL的函数是一段预编译的代码,它们可以接受参数,并且可以返回一个值。
函数可以被多次调用,并且可以嵌套使用。
2. 使用方法创建函数的语法如下:CREATE FUNCTION function_name ([parameter_name data_type [, ...]])RETURNS return_typeBEGIN-- 函数的SQL语句END;其中,function_name是函数的名称,parameter_name是函数的参数名称,data_type是参数的数据类型,return_type是函数的返回值类型。
实验八(上)用户自定义函数和触发器一、实验目的1、掌握SQLServer中用户自定义函数的使用方法。
2、掌握SQL Server中触发器的使用方法。
二、实验内容和要求1.创建一个返回标量值的用户定义函数RectangleArea:输入矩形的长和宽就能计算矩形的面积。
自选2种实例调用该函数。
create function RectangleArea(@a int,@b int)returns intasbeginreturn @a*@benddeclare @area intexecute @area=RectangleArea 3,5print('矩形面积是:')print @areadeclare @area intexecute @area=RectangleArea 7,8print('矩形面积是:')print @area2.创建一个用户自定义函数(内嵌表值函数),功能为产生某个系的学生选修信息,内容为学号,姓名,课程名,成绩。
调用这个函数,显示信息系有选课学生的信息。
create function Search (@sdept char(10))returns tableasreturn(select sc.sno 学号,student.sname 姓名,ame 课程名,sc.grade 成绩,student.sdept 系别from sc,student,course where o=o andsc.sno = student.sno and sdept=@sdept)select*from Search('cs')3.创建一个作用在P表上的触发器P_checks,确保用户在插入或更新P表的WEIGHT值时,所提供的WEIGHT值介于20与40之间,否则给出错误提示并回滚此操作。
请测试该触发器,测试方法自定。
create trigger P_checks on p for insertasbegindeclare @weight intselect @weight=weight from insertedif @weight<10 or @weight>20beginRAISERROR('weight 必须在~20之间!',16,1)ROLLBACK TRANSACTIONendendinsert into p(pno,pname,color,weight)values('p7','刀片','红',40)insert into p(pno,pname,color,weight)values('p7','刀片','红',15)select*from p4.创建一个作用在J表上的触发器J_Update,禁止同时修改项目的名称和所在城市,并进行相应的错误提示。
《版式设计项目教程》期末试题答案1. 视觉度和图版率的区别是什么?2. 进行网页设计时需要考虑什么?3. 平面构成的基本元素是什么?4. 网页设计中色彩的基本原则是什么?5. 文字编排方式是什么?6. 网页布局的基本结构是什么?7. 图片构成的种类有哪些?8. 词约指明的网页结构与导航设计指什么?9. 网页内容主要是指什么?10.网页形式主要是指什么?11. 设计一个个人网页界面,体现个人的风格特点。
要求:(1)设计内容包括主界面、欢迎页面和几个重要分页面,设计完整统一。
(2)通过界面的设计效果,能够传达给浏览者个人核心的内容,吸引浏览者注意。
(3)设计整体效果有创意性,注意文字及排版效果,以及各个界面之间的关系和展示个人风格特点。
12. 宣传册制作的基本步骤有哪些?13. 什么是网格?14. 网格的重要性有哪些?Excel数据处理与分析》是全校非计算机专业的专业基础课。
本课程的最终目标是培养学生掌握和运用Excel在实际问题中的分析能力和应用能力,提高学生分析和解决实际问题的能力。
为了达到这个目标,除了对Excel中的基本概念和操作方法进行介绍之外,特别强调理论和实际应用的结合,通过经典案例,介绍Excel在管理、金融、统计、账务、决策等领域的数据处理与分析方面的实际应用。
通过本课程的学习,使学生理解Excel数据处理与分析的相关知识,掌握Excel的实际应用和操作技巧,并能够应用Excel完成与本专业有关的数据处理与数据分析工作,同时为学习其它专业课程打下基础。
2.教学内容本课程教学内容可分为四部分:(1) Excel的应用基础主要介绍Excel的基本功能和基本操作,包括Excel基础、建立工作表、编辑工作表、美化工作表和打印工作表。
该部分是操作和应用的基础。
(2) Excel的数据处理该部分是本课程的重点之一。
主要介绍使用公式和函数实现数据处理的方法,以及直观显示数据的方法,包括使用公式计算数据、应用函数计算数据和利用图表显示数据。
第1章数据库基础练习题一、单项选择题1.C 2.A 3.C 4.D 5.D6.B 7.A 8.B 9.B 10.D11.C 12.A 13.C 14.B 15.A16.B 17.A 18.D 19.B 20.B21.A; D 22.A 23.C 24.D 25.B26.B 27.B 28.D 29.B 30.B二、填空题1.概念;数据2.属性3.码4.一对一联系;一对多(或多对一)联系;多对多联系5.候选码6.候选码7.关系名(属性1,属性2,…,属性n)8.关系数据结构;关系操作集合;关系完整性约束9.实体;参照;用户定义的;实体;参照10.空值11.需求分析阶段;概念结构设计阶段;逻辑结构设计阶段;物理结构设计阶段;数据库实施阶段;数据库运行和维护阶段12.准确了解并分析用户对系统的要求,尤其是用户的信息要求、处理要求、安全性与完整性要求,确定所要开发的应用系统的目标,产生用户和设计者都能接受的需求说明书,做为下一步数据库概念结构设计的依据。
13.将需求分析得到的用户需求抽象为信息结构即概念模型。
14.将概念结构进一步转化为某一DBMS支持的数据模型,并对其进行优化。
15.为逻辑数据模型选取一个最适合应用环境的物理结构,包括数据库在物理设备上的存储结构和存取方法。
三、指出以下各缩写的英文意思和中文意思1.DB:Database2.DBMS:Database Management System3.RDBMS:4.DBS:Database System5.DBA:Database Administrator6.NF:Normal Form7.DDL:Data Definition Language 四、按题目要求回答问题3.答:(1)关系R是2NF。
因为R的候选码为课程名,而课程名→教师名,教师名→教师地址,所以课程名→教师地址,即存在非主属性教师地址对候选码课程名的传递函数依赖,因此R不是3NF。
第 7 章存储过程、触发器和用户自定义函数(6课时)主要内容:1 存储过程(概述、创建与执行、修改与删除)2 触发器(概述、DML触发器、DDL触发器)3 用户自定义函数(概述、标量函数的建立与调用、内嵌表值函数的建立与调用、多语名表值函数的建立与调用)存储过程是一个可重用的代码模块,可以高效率地完成指定的操作。
触发器是一种特殊类型的存储过程,可以实现自动化的操作。
用户定义函数是由用户根据应用程序的需要而定义的可以完成特定操作的函数。
这三种数据库对象都可以通过两种方法来定义:SQL Server Management Studio工具命令这里只讨论通过命令的方式定义相应对象。
7.1 存储过程7.1.1 存储过程概述1 存储过程概念当使用SQL Server创建应用时,TRANSACT-SQL语言是应用程序与SQL Server数据库之间的主要编程接口。
使用TRANSACT-SQL语言进行程序设计时,有两种方式:一种方式是在应用程序中直接使用T-SQL 语句向SQL Server发送命令;另一种方式就是使用存储过程。
存储过程是一种数据库对象,由一组预编译的T-SQL语句组成,这些语句在一个名称下存储,并作为一个单元进行处理。
存储过程类似于其他编程语言中的函数或过程:能够使用传递给它的参数,能够调用其它存储过程甚至本身,能够返回一个状态码来表示是否成功执行。
在SQL Server 2008系统中,除了可以使用Transact-SQL语言编写存储过程外,也可以使用CLR方式编写存储过程。
【CLR,公用语言运行时(Commen Language Runtime),.NET提供了一个运行时环境,它负责资源管理(内存分配和垃圾收集),并保证应用和底层操作之间必要的分离。
是一种多语言执行环境,支持众多的数据类型和语言特性。
他管理着代码的执行,并使开发过程变得更加简单。
】SQL Server中有三类存储过程:系统存储过程(sp_为前缀)、用户自定义存储过程和扩展存储过程(xp_为前缀,扩展了SQL Server的功能,使得用户能调用外部例程(自已编写的程序或系统提供的命令),从SQL Server2005版本开始,将逐步删除扩展存储过程类型,因为使用CLR存储过程可以可靠和安全地替代扩展存储过程的功能)。
2 存储过程功能在SQL Server中,存储过程是一种非常强有力的数据库对象,利用它能够显著提高应用程序的性能。
主要功能表现在:接收输入参数并以输出参数的形式为调用过程或批处理返回多个值;包含对数据库操作的多条语句,可以调用其他存储过程;为调用存储过程或批处理返回一个状态值,以表示执行状态。
3 存储过程的特点模块化编程。
一旦创建了一个存储过程,就可以在应用程序中多次调用它,而且由于存储过程独立于应用程序,所以可以在不影响应用程序源代码的前提下修改它。
加快执行速度。
在创建一个存储过程时,SQL Server要对它进行分析和优化,以获得最好的执行性能;当一个存储过程被首次执行后,它就会驻留内存,当再次调用时,就不必再加载了,从而提高了整个系统的执行速度。
减少网络通信量。
使用存储过程,客户端的应用程序可以通过一条简单的执行命令来执行存放在服务器端的存储过程,而不必传输成百上千行的SQL语句代码,因此可以大大减少网络阻塞。
提供安全机制。
可以通过存储过程来间接将某些权限赋给用户。
复杂业务规则和约束的一致性实现。
存储过程足够强大,甚至能够实现最复杂的业务规则,这是因为存储过程可以同时合并过程语句和面向集合的语句。
4 存储过程的数据返回方式存储过程可以通过四种方式把数据返回到调用处:输出参数。
既可以返回数据(数值型或字符值等),也可以返回游标变量(游标是可以逐行检索的结果集)。
反回值。
始终是整型值。
结果集。
这些语句包含在该存储过程内或该存储过程所调用的任何其它存储过程内。
全局游标。
可从存储过程外引用的全局游标。
7.1.2 创建与执行存储过程1 创建存储过程简化语法:CREATE PROCE[DURE] procedure_name[{@parameter data_type}[=default][output]][,...n]ASsql_statement […n]其中,@parameter data_type 存储过程参数表,可以定义输入参数(默认)、输出参数output(即可输入数据,也可输出数据),也可以指明参数的默认值,默认值必须是常量或NULL。
参数表中可以有0个或多个参数,多个参数之间用豆号分开。
【输入参数:允许调用程序为存储过程传送数据值。
输出参数:输出参数允许存储过程将数据值或游标变量传回调用程序,在定义时和调用时均要使用OUTPUT关键字。
当然,也可以将变量的值通过输出参数输入到存储过程中。
】sql_statement 指定存储过程要执行的操作。
创建存储过程也要遵守一些规则,参见教材(p230-231)。
2 执行存储过程在SQL Server 2008系统中,可以使用EXECUTE语句执行存储过程。
简化语法:[ { EXEC[UTE ]} ]{[ @return_status = ]{ procedure_name }[ [ @parameter = ] { value| @variable [ OUTPUT ]| [ DEFAULT ]}][ ,...n ]}如果要执行带有参数的存储过程,需要在执行过程中提供存储过程参数的值。
如果使用@parameter_name=value语句提供参数值,可以不考虑存储过程的参数顺序,否则如果直接提供参数值,则必须考虑参数顺序。
存储过程创建之后,在第一次执行时需要经过语法分析阶段、解析阶段、编译阶段和执行阶段。
语法分析阶段。
是指系统检查创建存储过程的语句的语法是否正确的过程。
语法检查通过之后,系统将把存储过程的定义存储在当前数据库的sys.sql_modules目录视图中。
解析阶段。
是指检查存储过程引用的对象名称是否存在的过程,该过程也被称为延迟称称解析阶段。
当然,只有引用的表对象才适用于延迟名称解析。
编译阶段。
是指分析存储过程和生成执行计划的过程。
优化后的执行计划置于过程高速缓冲存储区中。
执行阶段。
是指执行驻留在过程高速缓冲存储区中的存储过程执行计划的过程。
在以后的执行过程中,如果现有的执行计划依然驻留在过程高速缓冲存储区中,那么SQL Server将重用现有执行计划。
当存储过程引用的基表发生结构变化时,该存储过程的执行计划将会自动优化。
但是当在表中添加了索引或更改了索引列中的数据后,该执行计划不会自动优化,此时应该重新编译存储过程。
可以使用三种方式重新编译存储过程:使用sp_recompile系统存储过程;在EXECUTE语句中使用WITH RECOMPILE子句;在CREATE PROCEDURE语句中使用WITH RECOMPILE子句。
3 存储过程的创建与执行实例例1:查找指定日期后签定的订单(创建有返回结果集的存储过程)use Northwindgoif OBJECT_ID('p1','p')is not nulldrop procedure p1gocreate procedure p1@datex datetimeasselect*from orders where orderdate>=@datexgo********************************************use Northwindexecute p1'1997-1-1'例2:求产品的平均单价(创建有返回参数的存储过程)use Northwindgoif OBJECT_ID('p2','p')is not nulldrop procedure p1gocreate procedure p2@avgprice money outputasselect@avgprice=avg(unitprice)from productsgo***********************************use Northwinddeclare@x moneyexecute p2@x outputselect@x例3:判断是否有1997年2月20号签定的订单,有返回0,没有返回1(创建有返回值的存储过程)use Northwindgoif OBJECT_ID('p3','p')is not nulldrop procedure p1gocreate procedure p3@datex datetimeasif exists(select*from orders whereorderdate=@datex)return 0elsereturn 1go****************************************************use Northwinddeclare@x intexecute@x=p3'1997-2-20'select@x例4:根据最后姓名模糊查找职员信息(创建带有缺省值参数的存储过程)use Northwindgoif OBJECT_ID('p4','p')is not nulldrop procedure p1gocreate procedure p4@namex nvarchar(20)='D%'asselect*from employees where lastname like@namex+'%'go******************************************use Northwindexecute p4execute p4'B'7.1.3 修改存储过程在Microsoft SQL Server 2008系统中,可以使用ALTER PROCEDURE 语句修改已经存在的存储过程。
修改存储过程,不是删除和重建存储过程,其目的是保持存储过程的权限不发生变化。
简化语法如下:ALTER PROCE[DURE] procedure_name[{@parameter data_type}[=default][output]][,...n]ASsql_statement […n]7.1.4 删除存储过程如果某个存储过程不再需要了,可以使用DROP PROCEDURE语句删除该存储过程。
具体语法是:DROP PROCEDURE procedure_name7.2 触发器7.2.1触发器概述触发器是数据库服务器中发生事件时能自动执行的一种特种存储过程,主要用于强制规则和数据完整性。