一、背景介绍

1.遇到存储过程
回顾之前知识,使用在当下(毕业设计)
2.了解周边知识

二、思路&方案

1.了解存储过程定义、语法、种类
2.存储过程有什么优缺点
3。存储过程与触发器和函数的联系

三、过程

1.什么是存储过程?

存储过程是一个预编译的SQL语句,优点是允许模块化的设计,就是说只需创建一次,以后在程序中就可以调用多次。如果某次操作需要执行多次SQL,使用存储过程比单纯SQL语句执行要快。可以用一个“execute 存储过程名 参数”命令来调用存储过程。

2.语法

创建存储过程
create proc 存储过程名字
as
语句

修改存储过程
alter proc 存储过程名字
as
语句

卸载存储过程
drop proc 存储过程名字

调用存储过程
exec 存储过程名称

下面是一个简单的存储过程示例,它接受一个参数,查询数据库中的客户信息,并将结果返回:

CREATE PROCEDURE GetCustomer
    @customerId INT
AS
BEGIN
    SELECT * FROM Customers WHERE CustomerId = @customerId
END

在执行该存储过程时,可以传入参数值来获取符合条件的客户信息:

EXECUTE GetCustomer 1

这将返回 CustomerId 为 1 的客户信息。注意,在执行存储过程时,使用 EXECUTE 关键字或省略该关键字都是可以的。

3.存储过程的种类

1 系统存储过程

以sp_开头,用来进行系统的各项设定.取得信息.相关管理工作。

2 自定义存储过程(本地存储过程)

以cp_开头,是用户为了完成某一特定功能而创建的存储过程,一般所说的存储过程就是指本地存储过程。

3 临时存储过程

分为两种存储过程:

一是本地临时存储过程,以井字号(#)作为其名称的第一个字符,则该存储过程将成为一个存放在tempdb数据库中的本地临时存储过程,且只有创建它的用户才能执行它;

二是全局临时存储过程,以两个井字号(##)号开始,则该存储过程将成为一个存储在tempdb数据库中的全局临时存储过程,全局临时存储过程一旦创建,以后连接到服务器的任意用户都可以执行它,而且不需要特定的权限。

4 远程存储过程

在SQL Server2005中,远程存储过程(Remote Stored Procedures)是位于远程服务器上的存储过程,通常可以使用分布式查询和EXECUTE命令执行一个远程存储过程。

5 扩展存储过程

扩展存储过程(Extended Stored Procedures)是用户可以使用外部程序语言编写的存储过程,而且扩展存储过程的名称通常以xp_开头。

4.存储过程的优缺点

优点:

1、重复使用:存储过程可以重复使用,从而可以减少数据库开发人员的工作量。

2、减少网络流量:存储过程位于服务器上,调用的时候只需要传递存储过程的名称以及参数就可以了,因此降低了网络传输的数据量。

3、安全性:参数化的存储过程可以防止SQL注入式攻击,而且可以将Grant、Deny以及Revoke权限应用于存储过程。

缺点
1:调试麻烦,但是用 PL/SQL Developer 调试很方便!弥补这个缺点。

2:移植问题,数据库端代码当然是与数据库相关的。但是如果是做工程型项目,基本不存在移植问题。

3:重新编译问题,因为后端代码是运行前编译的,如果带有引用关系的对象发生改变时,受影响的存储过程、包将需要重新编译(不过也可以设置成运行时刻自动编译)。

5.存储过程和触发器的区别

(1)存储过程是一组已创建并存储在数据库中的SQL语句。所以我们可以一遍又一遍地重用代码。而触发器是一种特殊的不是由用户直接调用存储过程,创建触发器时,会定义在针对特定表或列进行特定类型的数据修改时触发。

(2)用户可以使用Execute或Exec语句来直接调用或执行存储过程,而无法直接调用或执行触发器。触发相关事件时,只会自动执行触发器。

(3)存储过程可以采用输入参数,而触发器中不能将参数作为输入我们不能将参数作为输入传递给触发器。

(4)存储过程可以返回零或n值,触发器无法返回值。

方面 存储过程 触发器
定义和调用 存储在数据库中,需要在程序中调用 在数据库中定义,被自动触发
触发操作 手动调用 自动触发
触发时机 在需要时调用 在特定的事件发生时调用
主要用途 封装业务逻辑 强制实施数据完整性和一致性
参数传递 可以传递参数 可以引用表中的数据
返回值 可以返回结果集 不能返回结果集
事务处理 可以嵌套使用,可以随时提交或回滚 不能控制事务,只受所在事务的控制
支持的数据库 支持各种关系型数据库 仅支持某些关系型数据库
性能 可以提高数据操作的性能 可能会降低数据操作的性能

6.在毕业设计中的实现

查询班级学生选题情况
在这里插入图片描述
查询教师出题情况
在这里插入图片描述

在这里插入图片描述

四.总结

1.这次并使用了存储过程,对之前学习过的数据库的知识进行了回顾
2.为什么会遇到存储过程的问题?
(1)之前学习的基础知识不牢靠
(2)使用实践少,没有结构化
3.知其然,不知其所以然

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐