当前位置: 首页 > news >正文

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

一、学习目标

熟悉存储过程的定义和使用,熟练运用 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

 四、结果截图

 初始数据:

最终结果数据: 

 

五、小结

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

http://www.lryc.cn/news/8342.html

相关文章:

  • c++ 指针、引用和常量
  • 1、HAL库UART 中断|DMA 自动回显接收数据
  • NPOI - ConditionalFormattingRule
  • JavaのString类这一篇就够了(包含StringBuffer_Builder)
  • C# dataGridView 导出表格 xls NPOI 2.4.1 版本
  • 秒杀项目的消息推送
  • 最近开发及 vue3 几个小总结
  • 代谢组学分享-花青素通过调节氨基酸代谢改善糖尿病肾病的肾功能
  • 超简单!pytorch入门教程:Tensor
  • 如何使用COCO数据集,注意事项
  • 金三银四跳槽季,JAVA面试撸题就来【笑小枫】微信小程序吧~
  • 分享115个HTML电子商务模板,总有一款适合您
  • Python 字符串
  • 总线定义,车载总线:车载etherNet or CAN
  • Python(for和while)循环嵌套及用法
  • 6万字电力行业系统解决方案光伏电站综合安防系统解决方案
  • [Android Studio]Android 数据存储--SQLite数据库存储
  • 学校节能降耗减排方案——能耗监管平台的建设及效果剖析
  • 探索IP地址的应用
  • 点赞破万!阿里面试官总结的2022最新1685页Java面试宝典太全了
  • 项目搭建规范
  • 8.Docker Machine
  • 如何配合使用ESLINT 和 PRETTIER
  • 学英语的优势已来,抓住这个机会
  • 基于微信小程序云开发实现考研题库小程序项目(完整版)
  • AI一点通:使用 ColumnTransformer 转换 Pandas DataFrame 的一个或多个列
  • 【C语言】全局变量、局部变量和静态变量的区别
  • 血氧仪「上潜」,智能穿戴「下沉」
  • CPP2022-计算机类-期末考试
  • 【蓝桥集训】第二天——差分