数据库原理及应用存储过程和触发器
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
GO
CREATE PROCEDURE borrowed_book1
AS
SELECT r.RID,r.Rname,b.BID,k.Bname,b.LendDate
FROM reader r INNER JOIN borrow b
ON r.RID=b.RID INNER JOIN book k
ON b.BID=k. BID
ቤተ መጻሕፍቲ ባይዱAs
变量传值:
DECLARE @temp1 char(20)
SELECT
SET @temp1='杨树华'
r.RID,r.Rname,b.BID,k.BnamEeX,EbC.LbeornrodwDeda_tbeook2 @temp1
FROM reader r INNER JOIN bo-r-r实o参w表b
数据库原理及应用
数据库原理及应用
An Introduction to Database System
数据库原理及应用
数据库系统概论
An Introduction to Database System
第9章 存储过程和触发器
数据库原理及应用
教学目标:
• 掌握存储过程和触发器的基本概念, • 学会编写简单的存储过程和触发器, • 对存储过程和触发器的实际应用有较好的
GO
CREATE PROCEDURE factorial
@in float,
--输入形式参数
调用存储过程:
@out float OUTPUT --输出形式参数
DECLARE @ou float
AS DECLARE @i int DECLARE @s float
EXEC factorial 5,@ou OUT --实参表 PRINT @ou
SELECT r.RID,r.Rname,b.BID,k.Bname,b.LendDate FROM reader r INNER JOIN borrow b ON r.RID=b.RID INNER JOIN book k ON b.BID=k.BID ELSE SELECT r.RID,r.Rname,b.BID,k.Bname,b.LendDate FROM reader r INNER JOIN borrow b ON r.RID=b.RID INNER JOIN book k ON b.BID=k.BID WHERE Rname=@name GO
WHERE Rname='程鹏'
数据库原理及应用
9.1.3存储过程的参数
例:输入参数为某人的名字。
USE Library
直接传值: EXEC borrowed_book2 '程鹏' --实参表
GO
CREATE PROCEDURE borrowed_book2
@name varchar(10) --形式参数
理解。
数据库原理及应用
第9章 存储过程和触发器
• 9.1存储过程 • 9.2触发器
数据库原理及应用
9.1存储过程
• 9.1.1存储过程的基本知识 • 9.1.2创建用户存储过程 • 9.1.3存储过程的参数
数据库原理及应用
9.1.1存储过程的基本知识
• 存储过程(Stored Procedure)是一组编译 好存储在服务器上的完成特定功能T-SQL 代码,是某数据库的对象。客户端应用程 序可以通过指定存储过程的名字并给出参 数(如果该存储过程带有参数)来执行存 储过程。
9.1.1存储过程的基本知识
在SQL Server 2005中存储过程分为5类 : • 系统:系统提供的存储过程,sp_*,例如:
sp_rename • 扩展:SQL Server环境之外的动态链接库DLL,
xp_ • 远程:远程服务器上的存储过程 • 用户:创建在用户数据库中的存储过程 • 临时:属于用户存储过程,#开头(局部:一个用
SET @i=1
SET @s=1
WHILE @i<=@in
BEGIN
SET @s=@s*@i
SET @i=@i+1
END
SET @out=@s
--给输出参数赋值
数据库原理及应用
9.2触发器
• 9.2.1触发器的基本知识 • 9.2.2创建DML触发器 • 9.2.3创建DDL触发器 • 9.2.4修改触发器 • 9.2.5删除触发器 • 9.2.6查看触发器
ON r.RID=b.RID INNER JOIN book k
ON b.BID=k. BID
WHERE Rname=@name
GO
数据库原理及应用
9.1.3存储过程的参数
• 例:使用默认参数 USE Library GO CREATE PROCEDURE borrowed_book3 @name varchar(10)=NULL --默认参数 AS IF @name IS NULL
户会话),##(全局:所有用户会话)
数据库原理及应用
9.1.2创建用户存储过程
• 格式:
CREATE PROC 过程名 @形参名 类型 @变参名 类型 OUTPUT AS SQL语句
数据库原理及应用
9.1.2创建用户存储过程
例:创建一个多表查询的存储过程。 执行存储过程:
USE Library
borrowed_book1 或 EXEC borrowed_book1
客户:sp(1,2)
Sp(x,y)
数据库原理及应用
9.1.1存储过程的基本知识
使用存储过程而不使用存储在客户端计算 机本地的 T-SQL 程序的优点包括: • 允许标准组件式编程,增强重用性和共享 性 • 能够实现较快的执行速度 • 能够减少网络流量 • 可被作为一种安全机制来充分利用
数据库原理及应用
执行存储过程: EXEC borrowed_book3
数据库原理及应用
9.1.3存储过程的参数
• 例:利用输出参数计算阶乘。
USE Library
IF EXISTS(SELECT name FROM sysobjects
WHERE name='factorial' AND type='P')
DROP PROCEDURE factorial
数据库原理及应用
9.2.1触发器的基本知识
• 触发器是特殊的存储过程,基于一个表创 建,主要作用就是实现由主键和外键所不 能保证的复杂的参照完整性和数据一致性。
• 当触发器所保护的数据发生变化 (update,insert,delete)后,自动运行以 保证数据的完整性和正确性。通俗的说: 通过一个动作(update,insert,delete)调 用一个存储过程(触发器)。