数据库(6)--存储过程

时间:2022-05-12 00:37:45


一、学习目标

熟悉存储过程的定义和使用,熟练运用 select  ,update ,insert ,delete 命令完成对学生信息数据库的查询、更新、添加、删除操作。

 二、学习内容

学生(学号,年龄,性别,系名)

课程(课号,课名,学分,学时)

选课(学号,课号,成绩)

根据上面基本表的信息定义一个存储过程,完成下面功能:

入口参数:学号

1 显示学生的选课信息

2 如果学生没选课,让他选1号课,插入一条选课记录,成绩为0

3 如果学生所有课都不及格,删掉该学生记录

三、SQL代码

create procedure shiyan7(@sno char(10))
as
if @sno in (select xe.sno from xe)
begin
declare @w int
set @w=(select max(grade) from xe where xe.sno=@sno)
if @w<60
begin
print'此学生成绩不合格,予以删除'
delete from xe where xe.sno=@sno
end;
else
begin
print'选课信息:'
select stu.sno,stu.sname,xe.cnum,xe.grade
from stu,xe
where stu.sno=xe.sno and stu.sno=@sno
end;
end;
else
begin
print'此学生未选课'
insert into xe
values(@sno,'01',0)
end;
exec shiyan7 200511101
exec shiyan7 200511104
exec shiyan7 200511811

 四、结果截图

数据库(6)--存储过程

数据库(6)--存储过程

 初始数据:

数据库(6)--存储过程

最终结果数据:

数据库(6)--存储过程

 

五、小结

(1)创建存储过程
CREATE ORREPLACE PROCEDURE 过程名([参数1参数2..…]) 

AS <过程化 SOL 块>:
存储过程包括过程首部和过程体。在过程首部,“过程名”是数据库服务器合法的对象标识;参数列表[参数1,参数2,…]用名字来标识调用时给出的参数值,必须指定值的数据类型。可以定义输入参数、输出参数或输入/输出参数,默认为输入参数,也可以无参数

(2)执行存储过程
CALL/PERFORM PROCEDURE 过程名([参数1,参数2.…]);

使用CALL或者PERFORM等方式激活存储过程的执行。在过程化SQL中,数据库服务器支持在过程体中调用其他存储过程

(3)修改存储过程

可以使用ALTER PROCEDURE重命名一个存储过程:

ALTER PROCEDURE过程名1 RENAME TO 过程名2;

可以使用ALTER PROCEDURE重新编译一个存储过程:

ALTER PROCEDURE过程名COMPILE;
(4)删除存储过程

DROP PROCEDURE过程名0; 

使用存储过程具有以下优点:

(1)由于存储过程不像解释执行的SQL语句那样在提出操作请求时才进行语法分析和优化工作,因而运行效率高,它提供了在服务器端快速执行SQL语句的有效途径。

(2)存储过程降低了客户机和服务器之间的通信量。客户机上的应用程序只要通过网络向服务器发出调用存储过程的名字和参数,就可以让关系数据库管理系统执行其中的多条SQL语句并进行数据处理。只有最终的处理结果才返回客户端。

(3)方便实施企业规则。可以把企业规则的运算程序写成存储过程放入数据库服务器中,由关系数据库管理系统管理,既有利于集中控制,又能够方便地进行维护。当企业规则发生变化时只要修改存储过程即可,无须修改其他应用程序。