文档详情

第6章存储过程与触发器.pptx

发布:2024-09-18约1.1万字共45页下载文档
文本预览下载声明

第6章存储过程与触发器

SQLServer2019

数据库技术与应用

存储过程概述

触发器概述

存储过程概述

6.1

6.1.1存储过程的特点和类型

存储过程

是SQLServer服务器中一组预编译的T-SQL语句的集合。

是封装重复任务的方法

存储过程的特点

封装复杂操作

加快系统运行速度

实现代码重用

增强安全性

减少网络流量

调用方便

存储过程概述

6.1

6.1.1存储过程的特点和类型

存储过程的类型

SQLServer2008中常用的存储过程类型有3种:

系统存储过程(sp_):

由数据库系统自身创建,存储在master数据库中,以“sp_”前缀标识

用户定义存储过程(本地存储过程):

在单独的用户数据库内由用户创建。

临时存储过程:可以是局部的,名称以“#”开头;也可以是全局的,名称以“##”开头。

扩展存储过程(xp_):

以动态链接库(DLL)的形式实现。以“xp_”为前缀,只能添加到master数据库中,在SQLServer环境外执行。

存储过程概述

6.1

6.1.2存储过程的创建与执行

创建存储过程实际是对存储过程进行定义的过程,主要包含:

存储过程名称及其参数的说明和存储过程的主体

(包含执行过程操作的T-SQL语句)两部分。

可以使用3种方法创建存储过程:

使用图形工具

使用向导

使用Transact-SQL语言中的CREATEPROCEDURE语句

存储过程概述

6.1

---6.1.2存储过程的创建与执行

使用图形工具创建存储过程

存储过程概述

6.1

---6.1.2存储过程的创建与执行

使用CREATEPROCEDURE语句创建存储过程

语法格式如下:

CREATEPROC[EDURE]

[schema_name.]procedure_name[;number]

[{@parameter[schema_name.]data_type}

[VARYINGdefault][OUT|OUTPUT]]

[,…n]

[WITH{RECOMPILE|ENCRYPTION}]

[FORREPLICATION]

AS{[BEGIN]sql_statement[;][...n][END]}

注意:

schema_name表示架构名,如dbo.student,其中dbo是一个架构名,表示系统管理员。

ENCRYPTION表示加密;

REPLICATION表示复制

存储过程概述

6.1

---6.1.2存储过程的创建与执行

【例6.1】在Student数据库中创建一个名为p_Stu的存储过程,它将从表中返回所有学生的:StName、StSex、Class、Telephone

存储过程只能建立在当前数据库上,故需先用USE语句来指定数据库

USEStudent

Go

存储过程的内容如下:

CREATEPROCEDUREp_Stu

AS

SELECTStName,StSex,Class,TelephoneFROMStInfo

此存储过程是从单个表中提取数据,最终返回了学生的简明信息。

存储过程概述

6.1

---6.1.2存储过程的创建与执行

【例6.2】创建一个带SELECT查询语句的名为Average_Score的存储过程。从学生表、课程表、选课表中返回每位修课学生的课程平均分,要求包含姓名与平均分信息。

分析:

学生表与选课表通过“StID”关联,

课程表与选课表通过“CNo”关联,

要查到每个学生的修课平均分,需要通过聚集函数AVG计算,

因为引用了聚集函数,SELECT查询中必须使用GROUPBY分组。

存储过程的内容如下:

CREATEPROCEDUREAverage_ScoreAS

SELECTStInfo.StName,AVG(SCInfo.Score)ASAvgScoreFROMStInfo, SCInfo,CInfo

WHEREStInfo.StID=SCInfo.StIDANDSCInfo.CNo=CInfo.CNo

GROUPBYStInfo.StName

存储过程概述

6.1

---6.1.2存储过程的创建与执行

使用EXECUTE(或EXEC)命令执行存储过程

语法格式如下:

[[EXEC[UTE]]

{[@

显示全部
相似文档