第10章存储过程和触发器
第十章 存储过程与触发器
• DELETE触发器
create trigger trig_删除员工注册 on 员工信息 after delete as select 员工编号,员工姓名as 被删除员工姓名,所 任职位,联系电话 from deleted go
练一练 在deleted表中,查看 被删除的员工的员工 编号、姓名、所任职位 和联系电话。
以C语言等编写的外部程序, 以动态链接库(Dll)形式存储 在服务器上,SQL Server可以 动态装载并执行它们。
系统存储过程
• 放在master 数据库中,以“sp_”为前缀。通过系统存储过程, SQL Server 2008中许多管理性或信息性的活动可以被顺利 地有效地完成。
分离数据库 创建自己的数据类型 删除自定义数据类型 重命名表
• 管理存储过程
查看存储过程的信息 修改存储过程 删除存储过程
• 查看存储过程的信息
select object_definition(object_id(N'proc_getclassstudent')) as '查看存储过程的定义内容'
• 修改存储过程 alter procedure getnumber_ab @a int=1,@b int=1, @c int=0 output as set @c=@a+@b return @c declare @intc int exec getnumber_ab 6,2,@intc output select '两数之和为:'+str(@intc)
• INSERT触发器 例:在 员 工信息表中插入一条 员工信息记录的同时,更新部 创建触发 器 触发器名 门信息表中员工人数 练一练 create trigger trig_员工注册 更新部门信息表,部 门编号为“10001、 on 员工信息 10002”的员工人数加 after insert 1。 as begin update 部门信息 set 员工人数=员工人数+1 (select 所在部门编号 from inserted) where 部门编号 in (‘10001’,’10002’) end
SQL课件存储过程和触发器PPT课件
14
10.4.1 触发器的特点
触发器是一种特殊的存储过程,除了存储过程的特点 外,它还另外有以下特点:
触发器是自动执行的,可以在一定条件下触发。 触发器可以同步数据库的相关表,进行级联更改。 触发器可以实现更复杂的安全检查。它可以实现比CHECK
更复杂的业务规则,还可以引用其他表中的列。 触发器可以实现数据库的管理任务。如DDL触发器,在
返回 上页
1
教学目标:本章主要包含以下内容。 存储过程概述 设计存储过程 实现和管理存储过程 触发器概述 设计触发器 实现和管理触发器 通过本章的学习,使读者掌握存储过程和触发器的基础知识, 并基本学会编写简单的存储过程和触发器,为以后在实际 应用中不断提高自己编写存储过程和触发器的技能打下良 好的基础。
返回 上页
10
10.3.3 修改存储过程
1. 修改存储过程的语法 注意:修改存储过程的名称会影响已关联对象对此存储过程
的调用。 2. 使用Management Studio修改存储过程
返回 上页
11
10.3.4 重新编译存储过程
1.sp_recompile系统存储过程可以强制指定的存储过程在下 次调用时重新编译。其调用的语法结构为:sp_recompile [ @objname = ] 'object',其中的object为存储过程的名称 。
由于必须使用Transact-SQL语句创建存储过程,所以用户 必须首先掌握创建存储过程的Transact-SQL语法结构,然后再 学习如何使用Management Studio创建存储过程。
返回 上页
9
10.3.2 执行存储过程
执行存储过程有多种方式,比较常用的有以下几种。 1. 通过Execute或Exec语句执行 2. 通过设置,使存储过程自动执行 3. 作为批处理的第一行,直接输入存储过程名
数据库设计中的存储过程与触发器
数据库设计中的存储过程与触发器数据库设计在软件开发中起着至关重要的作用,它决定着数据的结构、存储和访问方式。
在数据库设计中,存储过程和触发器是两个常用的技术,它们能够帮助我们更好地实现数据管理和处理的目标。
本文将重点探讨数据库设计中的存储过程与触发器,并介绍它们的作用、使用场景和优缺点。
一、存储过程存储过程是一组预编译的SQL语句集合,可以在数据库服务器上进行执行。
它们通常用于实现复杂的数据库操作、数据验证和业务逻辑。
存储过程可以被视为一种封装了的数据库操作,通过调用存储过程,我们可以实现统一的数据处理逻辑,提高代码的复用性和可维护性。
在数据库设计中,存储过程可以起到以下几个作用:1. 数据的一致性和完整性控制:存储过程可以通过在执行之前进行数据验证、规范化和自动修复,保证数据的一致性和完整性。
2. 事务管理:存储过程可以帮助我们实现复杂的事务处理,通过定义事务的边界、控制事务的提交和回滚,确保数据的一致性和可靠性。
3. 数据库性能优化:存储过程可以通过预编译和优化查询语句等技术手段,提高数据库的访问效率和响应速度。
存储过程的使用场景多样,例如在用户注册时进行用户名的唯一性验证,在订单提交时计算订单总价等。
然而,存储过程并非适合所有情况,它也存在一些缺点,如可移植性差、调试困难等。
因此,在使用存储过程时应权衡其利弊,并根据具体需求做出选择。
二、触发器触发器是与数据库表相关联的一种特殊对象,它在表上的插入、更新或删除操作时被自动触发执行。
触发器可以用于实现诸多数据库功能,如数据验证、派生数据和审计跟踪等。
触发器的主要作用如下:1. 数据验证和约束:触发器可以在插入、更新或删除数据之前进行数据验证和约束,确保数据的完整性和一致性。
2. 派生数据:通过触发器,可以自动计算和派生某些数据,避免手动计算和维护数据的复杂性。
3. 审计跟踪:触发器可以在数据操作时记录相关的变更信息,以实现审计和追踪功能,用于安全和合规需求。
《存储过程与触发器》课件
触发器适用于需要实时响应数据变化、自动执行数据关联操作的场景。
存储过程和触发器的区别和联系
1
区别
存储过程是主动调用,触发器是被动触发;
联系
2
存储过程可以接受参数,触发器不能。
存储过程和触发器都是数据库中的可调用代 码,都可以实现数据的处理和逻辑的实现。
示例和案例
示例一
使用存储过程实现用户权限管理, 提高系统的安全性。
示例二
使用触发器实现订单状态的自动更 新,提升客户服务效率。
案例
存储过程和触器在电子商务平台 的应用,优化数据处理流程。
触发器的定义和作用
1 定义
2 作用
触发器是与数据库表相关联的一段代码,当表上 的特定事件发生时自动执行。
触发器可以用于实现数据的自动更新、数据的完 整性约束、审计和日志记录等功能。
存储过程的优点和用途
1 优点
存储过程可以减少网络通信的开销,提高数据库性能;可以保护数据的安全性,防止数 据被非法访问。
《存储过程与触发器》 PPT课件
存储过程和触发器是数据库中重要的功能模块。本课件将介绍存储过程和触 发器的定义、作用、优点、用途以及它们的使用场景、区别和联系,并提供 实例和案例。
存储过程的定义和作用
1 定义
2 作用
存储过程是一段预先编写好并存储在数据库中的 可被多次调用的代码块。
存储过程可以实现数据的封装和重复使用,提高 数据库的性能和安全性。
2 用途
存储过程常用于数据的复杂计算、数据的批量处理、数据的备份和还原等场景。
触发器的优点和用途
1 优点
2 用途
触发器可以自动执行,无需手动触发;可以实现 数据的实时更新,保证数据的一致性。
第10章存储过程与触发器
10.1 存储过程概述
存储过程具有以下优点
➢ (1)模块化编程。 ➢ (2)快速执行。 ➢ (3)减少网络通信量。 ➢ (4)提供安全机制。 ➢ (5)保证操作一致性。
1010..22 存储存过程储的创过建与使程用 的创建与使用
存储过程创建
1. 使用企业管理器创建存储过程
10.2.1 创建存储过程
10.2.5 存储过程参数与状态值
2. 返回存储过程的状态 (1)用RETURN语句定义返回值 存储过程可以返回整型状态值,表示过程是否成功执行,
或者过程失败的原因。 如果存储过程没有显式设置返回代码的值,则SQL Server
返回代码为 0,表示成功执行;若返回-1~ -99之间的整数, 表示没有成功执行。也可以使用RETURN语句,用大于0 或小于-99的整数来定义自己的返回状态值,以表示不同 的执行结果。
order_num FROM employee e INNER JOIN sell_order s ON
e.employee_id=s.employee_id JOIN goods g ON g.goods_id=s.goods_id JOIN goods_classification gc ON gc.classification_id=g.classification_id WHERE employee_name LIKE @employee_name
10.2.2 执行存储过程
例如,执行例10-1的存储过程goods_info
在SQL查询分析器中输入命令: EXEC goods_info
运行的结果:
修改存储过程 10.2 存储过程的创建与使用
1. 使用企业管理器修改存储过程 2. 使用ALTER PROCEDURE语句修改存储过程
10 存储过程与触发器[55页]
学习目标
• 了解存储过程和函数的相关概念 • 掌握创建并调用存储过程和函数的方法 • 掌握变量、条件和处理程序、游标的使用 • 掌握查看、修改及删除存储过程和函数的方法 • 了解什么是触发器 • 掌握创建触发器的方法 • 掌握查看触发器的方法 • 掌握使用触发器的方法 • 掌握删除触发器的方法
• (4)characteristic表示存储过程的特性,可取值及其意义如下: • LANGUAGE SQL:表示存储过程的 routine body部分使用SQL语言编写,当前系统
支持的语言为SQL。 • [NOT]DETERMINISTIC: DETERMINISTIC表示存储过程的执行结果是确定的,就
4
10.1.1 存储过程的基本概念
• 通过前面章节的学习,相信读者已经能够编写操作单表或者多表的单条 SQL语句,但是针对表的一个完整操作往往不是单条SQL语句就能实现的 ,而是需要一组SQL语句来实现。
• 例如,要完成一个购买商品订单的处理,一般需要考虑以下几步: • (1)在生成订单之前,首先需要查看商品库存中是否有相应商品。 • (2)如果商品库存中不存在相应商品,需要向供应商订货。 • (3)如果商品库存中存在相应商品,需要预定商品,并修改库存数量。 • 在实际应用中,一个完整的操作会包含多条SQL语句,并且在执行过程中
2
章节内容
• 10.1存储过程 • 10.2 游标 • 10.3 触发器 • 10.4 事件
3
10.1存储过程
10.1.1 存储过程的基本概念 10.1.2 存储过程的创建和调用 10.1.3 使用图形化工具创建存储过程 10.1.4 查看存储过程 10.1.5 修改存储过程 10.1.6 删除存储过程 10.1.7 存储过程与函数的联系与区别 10.1.8 利用MySQL Workbench工具管理存储过程
第10章-存储过程和触发器
第10章存储过程和触发器【学习目标】本章将要学习存储过程和触发器的基本概念、作用和基本操作。
本章学习要点:◆存储过程的概念、作用、分类;◆存储过程的创建、查看、修改和执行;◆触发器的主要作用、类型;◆inserted表和deleted表的作用和使用;◆触发器的创建方法、查看、修改和执行。
【学习导航】存储过程(Store Procedure)和触发器(Trigger)是SQL Server 数据库系统重要的数据库对象,在以SQL Server 2005 为后台数据库创建的应用程序中具有重要的应用价值。
本章主要内容见图10-1所示的学习导航。
图10-1 本章内容学习导航10.1 存储过程概述Transact-SQL语言是应用程序与SQL Server数据库之间的主要编程接口,大量的时间将花费在Transact-SQL 语句和应用程序代码上。
在很多情况下,许多代码被重复使用多次,每次都输入相同的代码不但繁琐,更由于在客户机上的大量命令语句逐条向SQL Server 发送,将降低系统运行效率。
因此,SQL Server提供了一种方法,它将一些固定的操作集中起来由SQL Server数据库服务器来完成,应用程序只需调用它的名称,就可实现某个特定任务,这种方法就是存储过程。
下面将详细介绍存储过程的概念、特点、创建、执行等内容。
10.1.1 存储过程的概念SQL SERVER 中T-SQL语言为了实现特定任务而将一些需要多次调用的固定的操作编写成子程序并集中以一个存储单元的形式存储在服务器上,由SQL Server数据库服务器通过子程序名来调用它们,这些子程序就是存储过程。
存储过程是一种数据库对象,存储在数据库内,可由应用程序通过一个调用执行,而且允许用户声明变量、有条件执行,具有很强的编程功能。
存储过程可以使用EXECUTE语句来运行。
在SQL Server中使用存储过程而不使用存储在客户端计算机本地的T-SQL程序有以下几个方面的好处。
存储过程和触发器课件
触发器的主要作用是用于在数据表上 自动执行一系列操作,以确保数据的 完整性和一致性。
触发器的分类与触发事件
分类
根据触发时机,触发器可分为INSERT触 发器、UPDATE触发器和DELETE触发器 。
VS
触发事件
在执行INSERT、UPDATE或DELETE操作 时,触发器会自动执行。
触发器的优缺点
作用
存储过程可以用于封装数据库操作,简化复杂的数据库操作 ,提高数据访问的效率,减少网络流量,提高数据安全性等 。
存储过程的分类
系统存储过程
系统存储过程以sp_作为前缀,主 要用于管理系统数据库的存储过 程。
自定义存储过程
用户自定义存储过程是由用户根 据自己的需求编写的存储过程。
存储过程的优缺点
触发器参数
用于传递给触发器的值或变量。
触发器返回值
触发器执行完毕后返回的值或结果。
触发器的使用示例
• 示例1:创建一个在插入操作时触发的触发器,将新插入的 记录的ID复制到另一个表中。
触发器的使用示例
AFTER INSERT ON table1
CREATE TRIGGER after_insert_example
可维护性差:随着业务逻辑的 变更,可能需要修改多个触发
器,维护成本较高。
05
触发器的创建与使用
创建触发器的基本语法
• CREATE TRIGGER 触发器名称
创建触发器的基本语法
ON 表名 FOR EACH ROW WHEN 条件
创建触发器的基本语法
BEGIN 触发器逻辑 END;
触发器的参数与返回值
存储过程和触发器课件
• 存储过程概述 • 存储过程的创建与使用 • 存储过程的调试与优化 • 触发器概述 • 触发器的创建与使用 • 触发器的调试与优化
存储过程和触发器
][ ,...n ] [ WITH <procedure_option>] [ ,...n ]
[ FOR REPLICATION ] AS { <sql_statement> [;][ ...n ]
| EXTERNAL NAME asse MBly_name.class_name.method_name } [;]
【例7.7】 对例7.2中创建旳存储过程student_info1进行修改,将第一种参数改 成学生旳学号。
ON c.Leabharlann 程号= b.课程号WHERE 姓名 LIKE @name
GO
执行存储过程:
EXECUTE st_info
/*参数使用默认值*/
或者
EXECUTE st_info '王%'
/*传递给@name 旳实参为'王%'*/
(5)使用OUTPUT游标参数旳存储过程。OUTPUT游标参数用于返回存储过程 旳局部游标。
/*执行旳操作*/
| EXTERNAL NAME asse MBly_name.class_name.method_name }
[;]
其中,
<procedure_option> ::=
[ ENCRYPTION ]
[ RECOMPILE ]
2.存储过程旳执行
经过EXECUTE或EXEC命令能够执行一种已定义旳存储过程,EXEC是EXECUTE旳 简写。语法格式:
3.举例
(1)设计简朴旳存储过程。 【例7.1】 返回081101号学生旳成绩情况。该存储过程不使用任何参数。 USE PXSCJ GO CREATE PROCEDURE student_info
数据库原理第10章 存储过程和触发器
Hale Waihona Puke 10.1.2 创建和执行存储过程【例3】带多个输入参数并有默认值的存储过程:查询某个学生某门课程的考试成绩,课程的默认值为“java”。 CREATE PROCEDURE p_StudentGrade3 @sname char(10), @cname char(20) = 'Java' AS SELECT Sname, Cname, Grade FROM Student s INNER JOIN SC ON s.Sno = SC.sno INNER JOIN Course c ON o = o WHERE sname = @sname AND cname = @cname
由用户自行创建的存储过程,可以输入参数、向客户端返回表格或结果、消息等,也可以返回输出函数。
10.1.2 创建和执行存储过程
1.创建存储过程 CREATE PROC[EDURE] 存储过程名 [ { @参数名 数据类型 } [ = default ] [OUTPUT] ] [ , … n ] AS SQL语句 [ … n ] 2.执行存储过程 EXEC [ UTE ] 存储过程名 [实参 [, OUTPUT] [, … n] ]
存储过程功能
接受输入参数并以输出参数的形式将多个值返回给调用者。 包含执行数据库操作的语句。 将查询语句执行结果返回到客户端内存中。
存储过程分类
存储过程类型 系统存储过程 扩展存储过程 用户自定义存储过程
系统存储过程存储以SP_为前缀,是由SQL Server2008自己创建、管理和使用的一种特殊的存储过程,不能对其进行修改或删除。如Sp_helpdb、Sp_renamedb等。
数据库基础与实践技术 (SQL Server 2008)
第十章 存储过程和触发器(清华大学)ppt
Page 8
10.2.3 带输入参数的存储过程 1.建立存储过程 一个存储过程可以带一个或多个参数,输入参数是
指由调用程序向存储过程传递的参数,它们在创建 存储过程语句中被定义,在执行存储过程中给出相 应的参数值。 声明带输入参数的存储过程的语法格式如下: CREATE PROCEDURE 存储过程名 @参数名 数据类型[=默认值] [,…n]
[WITH ENCRYPTION]
[WITH RECOMPILE]
AS SQL 语句
SQL Server实用教程
23.-05.2020
Page 9
其中“@参数名”和定义局部变量一样,必须以符号@为 前缀,要指定数据类型,多个参数定义要用“,”隔开。 在执行存储过程时该参数将由指定的参数值来代替,如果 执行时未提供该参数的参数值,则使用时须定义默认值 (默认值可以是常量或空值null),否则将产生错误。
SQL Server实用教程
23.-05.2020
Page 3
10.1.3 存储过程的类型 (1)系统存储过程。 (2)本地存储过程。 (3)临时存储过程。 (4)远程存储过程。 (5)扩展存储过程。
SQL Server实用教程
23.-05.2020
Page 4
10.2 建立和执行存储过程
简单存储过程类似于将一组SQL语句起个名字,然后就可 以在需要时反复调用。复杂一些的则要有输入和输出参数。
23.-05.2020
Page 10
CREATE PROCEDURE stu_cj1 @name char(10),@cname char(16)
AS SELECT xs.学号,姓名,课程名,成绩
FROM xs INNER JOIN cj ON xs.学号=cj.学号INNER JOIN kc ON cj.课程号=kc.课程号
第10章 存储过程和触发器
创建存储过程
可以 使用企业管理器创建存储过程和使用Transact-SQL语句创建存储过程。 使用Transact-SQL语句创建存储过程,其语法格式如下。 CREATE PROC [ EDURE ] procedure_name [ ; number ]
[ { @parameter data_type } [ VARYING ] [ = default ] [ OUTPUT ]
存储过程与其他编程语言中的过程类似。它可以接受输入参数并以输出参数的格式向 调用过程或批处理返回多个值;包含用于在数据库中执行操作(包括调用其他过程)的编程 语句;向调用过程或批处理返回状态值,以指明成功或失败(以及失败的原因)。 SQL Server中供了3种类型的存储过程。各类型存储过程如下: 用来管理SQL Server和显示有关数据库和用户的信息的存储过程,这些存储过程被称为系 统存储过程。
触发器的种类
SQL Server 包括三种常规类型的触发器:DML 触发器、DDL 触发器和登录触发器。 当数据库中发生数据操作语言 (DML) 事件时将调用 DML 触发器。DML 事件包括在指定表 或视图中修改数据的 INSERT 语句、UPDATE 语句或 DELETE 语句。DML 触发器可以查询 其他表,还可以包含复杂的 Transact-SQL 语句。 您可以设计以下类型的 DML 触发器:
重点难点
重点: 存储过程的概念; 存储过程的优点; 创建存储过程; 创建触发器; 难点: 管理存储过程; 管理触发器。
教学内容
存储过程的概念; 存储过程的优点; 管理存储过程; 触发器的概念; 触发器的优点; 触发器的种类; 创建触发器; 管理触发器;
存储过程的概念
存储过程(Stored Procedure)是预编译SQL语句的集合,这些语句存储在一个名称 下并作为一个单元来处理。存储过程代替了传统的逐条执行SQL语句的方式。一个存储过程 中可包含查询、插入、删除、更新等操作的一系列SQL语句,当这个存储过程被调用执行时, 这些操作也会同时执行。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
SQL SERVER 2005
【问题】创建一个名为p_Student的存储过程,返回student表
中班级编码为20000001的学生信息。
CREATE PROCEDURE p_Student
AS
SELECT *
FROM Student
WHERE ClassNo='20000001'
14
SQL SERVER 2005
程所引用):
sp_depends [ @objname = ] 'table_name‘ (4)查看一个存储过程引用了哪些表及其列: sp_depends [ @objname = ] 'procedure_name'
29
重命名、删除存储过程
SQL SERVER 2005
重命名 Sp_rename 旧存储过程名,新存储过程名 删除格式 DROP PROCEDURE proc_name
根据给定的班级编码显示该班级所有学生的信息。
CREATE PROCEDURE p_StudentPara @ClassNo VARCHAR(8) AS SELECT * FROM Student WHERE ClassNo=@ClassNo
19
练习2
SQL SERVER 2005
创建一个名为p_StuByPara的存储过程,根据给定的班级
5
SQL SERVER 2005
存储过程的分类 系统存储过程。 扩展存储过程(提供从SQL Server到外部程序的 接口,以便进行各种维护活动)。 用户自定义的存储过程。
6
SQL SERVER 2005
系统执行T-SQL语句的步骤 T-SQL语句发送到服务器 服务器编译T-SQL语句 优化产生查询执行计划 数据库引擎执行查询计划 执行结果发回客户程序
语法如下:
EXEC procedure_name
[value1,value2…]
24
SQL SERVER 2005
【例】用按位置传递参数的方法执行存储过程 p_StudentPara ,分别查找班级代码为20010051和 20010059的学生记录。
EXEC p_StudentPara ‘20010051’
使用T-SQL语言查看存储过程的信息 (1)查看定义存储过程的文本: sp_helptext [ @objname = ] 'procedure_name'
28
SQL SERVER 2005
(2)查看存储过程的名称、所有者、建立时间: sp_help [ @objname = ] 'procedure_name' (3)查看存储过程所引用的表(或查看一个表被哪些存储过
CREATE TRIGGER 触发器名 ON {表|视图} [ WITH ENCRYPTION ] { FOR | AFTER | INSTEAD OF } { [ INSERT ] [ , ] [ UPDATE ]
[ , ] [DELETE] }
[ NOT FOR REPLICATION ]
AS
[{IF UPDATE(列名)[{AND|OR} UPDATE(列名)][ ...n ]} SQL语句
执行格式
EXEC proc_name
【例】使用Transact-SQL语句执行前例中创建的名为 p_Student的存储过程。
EXEC p_Student
15
练习1
SQL SERVER 2005
1. 创建一个名为p_StuByClass的存储过程,返回 “00电子商务”班的所有学生的信息。 2. 执行该存储过程,并使用管理器查看该存储过程 的定义。
SQL SERVER 2005
使用参数名传递参数值
通过@para_name = value 给出参数的传递值。当
存储过程含有多个输入参数时,参数值可以按任
意顺序设定,对于允许空值和具有默认值的输入
参数可以不给出参数的传递值。
EXEC proc_name
[@para_name = value ][, …n]
32
触发器的作用
SQL SERVER 2005
在指定的表中数据发生变化时被调用以响应 INSERT、UPDATE或DELETE事件。 强制执行业务规则。
33
触发器类型
SQL SERVER 2005
DML触发器
当数据库服务器中发生数据操作语言(DML)事件时要执
行的操作,包括对表或视图发出的UPDATE、INSERT或 DELETE语句。 DDL触发器 DDL触发器将激发存储过程以响应事件,他们会响应数据 定义语言(DDL),包括以CREATE、ALTER、DROP开 头的语句。
ROLLBACK
40
查看触发器
SQL SERVER 2005
sp_help:用于查看触发器的一般信息,如触发器 的名称、属性、类型和创建时间。 sp_help ‘触发器名称’ sp_helptext:用于查看触发器的正文信息 sp_helptext ‘触发器名称’ sp_depends:用于查看指定触发器所引用的表或 指定的表涉及到的所有触发器。 sp_depends ’触发器名称’
编码和学生学号,显示相应学生的信息。
CREATE PROCEDURE p_StuByPara
@ClassNo CHAR(8) ,@StuNo char(8)
AS SELECT * FROM Student WHERE ClassNo=@ClassNo and StuNo=@StuNo
20
执行带输入参数的存储过程
SQL SERVER 2005
创建格式 CREATE PROCEDURE proc_name [WITH ENCRYPTION] [WITH RECOMPILE] AS Sql_statements 其中: WITH ENCRYPTION对存储过程进行加密。 WITH RECOMPILE对存储过程重新编译。
学习难点:
理解存储过程和触发器的作用
3
教学内容
SQL SERVER 2005
1 2
存储过程概述
创建和执行存储过程 存储过程的管理和维护
创建和管理触发器
3
4
5
本章小结
4
第一节 存储过程概述
SQL SERVER 2005
什么是存储过程?
是一组被编译在一起的T-SQL语句的集合,它们被集合 在一起以完成一个特定的任务。
CREATE TRIGGER 语句必须是批处理中的第一个语句。
创建触发器的权限默认分配给表的所有者,且不能将该权限 转给其他用户。 触发器是数据库对象,其名称必须遵循标识符的命名规则。 虽然触发器可以引用当前数据库以外的对象,但只能在当前 数据库中创建触发器。
36
创建触发器的语法格式
SQL 2005
21
SQL SERVER 2005
【例】用使用参数名传递参数值的方法执行存储过 程p_StudentPara,分别查找班级代码为20000001 和20000002的学生记录。 EXEC p_StudentPara @ClassNo=‘20000001’ EXEC p_StudentPara @ClassNo=‘20000002’
在查询编辑器中运行如下命令测试触发器: UPDATE Student SET Pwd=‘11111111’ WHERE StuNo=‘00000001’
39
创建DDL触发器
SQL SERVER 2005
创建一个当用户删除表时触发的触发器 CREATE TRIGGER Test2 On DATABASE FOR DROP_TABLE AS PRINT ‘不允许删除表!’
郑州经贸职业学院计算机系
数据库应用技术 SQL Server 2005
第10章 存储过程和触发器
SQL SERVER 2005
学习目标:
1.理解存储过程和触发器的作用
2.熟练管理(如创建,删除)存储过程和触
发器
2
第10章 存储过程和触发器
SQL SERVER 2005
学习重点:
管理存储过程和触发器
34
创建DML触发器
SQL SERVER 2005
在创建触发器时,需要指定触发器的名称、包含触 发器的表、引发触发器的条件以及当触发器启动后 要执行的语句等内容。和创建维护存储过程一样, 可以通过CREATE TRIGGER语句或管理器来创建 触发器。
35
SQL SERVER 2005
创建触发器应该考虑以下几个问题
EXEC p_StudentPara ‘20010051’
25
SQL SERVER 2005
比较:
按位置传递参数值比按参数名传递参数值简洁。比
较适合参数值较少的情况。
而按参数名传递的方法使程序可读性增强,特别是
在参数数量较多时,建议使用按参数名传递参数的
方法,这样的程序可读性、可维护性都要好一些。
26
第三节 存储过程的管理和维护
SQL SERVER 2005
修改格式 ALTER PROCEDURE proc_name @para_name datatype [=default], … [WITH ENCRYPTION] AS Sql_statements
27
查看存储过程
SQL SERVER 2005
30
系统存储过程
SQL SERVER 2005
在SQL Server中的许多管理过程都是通过执行系统 存储过程来完成的。 系统存储过程保存在master数据库中,都是以 “sp_”为前缀的,可以在任何数据库中使用系统存 储过程。
31
第四节 创建和管理触发器