数据库——实验9 存储过程的使用

发布于:2024-04-20 ⋅ 阅读:(22) ⋅ 点赞:(0)

1. 存储过程的定义

存储过程是一系列预先编辑好的、能实现特定数据操作功能的SQL 代码集,它与特定的数据库相关联,存储在SQL  Server服务器上。用户可以像使用自定义的函数一样重复调用这些存储过程,实现它所定义的操作。

2. 存储过程的类型

存储过程分为3类:系统存储过程、用户自定义存储过程和扩展存储过程。 

(1)系统存储过程主要存储在 master  数据库中并以 sp_ 为前缀。

(2)用户自定义存储过程是由用户创建并能完成某一特定功能(如查询用户所需数据信息)的存储过程,是封装了可重用代码的 SQL 语句模块。

(3)扩展存储过程允许使用高级编程语言(例如C 语言)创建应用程序的外部例程而使SQL   Server 的实例可以动态地加载和运行 DLL

3. 创建存储过程的步骤

一般来说,创建一个存储过程应按照以下步骤进行:

(1)编写SQL 语句。

(2)测试 SQL 语句是否正确,并能实现功能要求。

(3)若得到的结果数据符合预期要求,则按照存储过程的语法,创建该存储过程。 

(4)执行该存储过程,验证其正确性。

4. 使用 SQL 语句创建存储过程

创建存储过程的语法格式:

CREATE PROC [ EDURE ] procedure_name [ ;number ]

[ @parameter  data_type  [= default  ],…]

AS sql_statement

说明:

·procedure_name:给出存储过程名。

·Number:为可选的整数,对同名的存储过程指定一个序号。

·@parameter: 为存储过程的形参,@符号作为第一个字符来指定参数名。 

·data_type:指出参数的数据类型。

·=default:给出参数的默认值。

·sql_statement: 存储过程所要执行的 SQL 语句,它可以是一组 SQL 语句,可以包含流程控制语句等。

5. 创建、修改、调用、删除存储过程示例

在“学生管理”数据库中有“学生”表、“课程”表、“成绩”表结构如图1-20所示。 

1)创建存储过程

如果要通过SQL 语句创建一个存储过程,存储过程名为 student_grade,   要求现实如下功能:查询“学生管理”数据库中每个学生各门功课的成绩,其中包括每个学生的学号、姓名、课程名、分数,创建该存储过程的语句如下:

CREATE PROCEDURE student_grade

AS

SELECT 学号,姓名,课程名,分数

FROM 学生,课程,成绩

WHERE 学生.学号=成绩.学号 AND 成绩.课程号=课程.课程号

GO

2)修改存储过程

存储过程 student_grade 已创建,根据要求对它进行修改,只要使用 ALTER PROCEDURE 语句即可实现。

修改存储过程 student_grade,, 实现查询“学生管理”数据库中计算机系学生各门功课的成绩,其中包括每个学生的学号、姓名、课程名、学分、分数。

ALTER PROCEDURE student_grade

AS

SELECT 学号,姓名,课程名,学分,分数

FROM 学生,课程,成绩

WHERE 学生.学号=成绩.学号 AND 成绩.课程号=课程.课程号

AND学生.所在院系='计算机系'

GO

3)调用存储过程

EXEC student_grade

GO

4)删除存储过程

无用的存储过程可用 DROP 语句将其删除。

DROP PROCEDURE student_grade

GO