一、背景介绍
1.遇到存储过程
回顾之前知识,使用在当下(毕业设计)
2.了解周边知识
二、思路&方案
1.了解存储过程定义、语法、种类
2.存储过程有什么优缺点
3。存储过程与触发器和函数的联系
三、过程
1.什么是存储过程?
存储过程是一个预编译的SQL语句,优点是允许模块化的设计,就是说只需创建一次,以后在程序中就可以调用多次。如果某次操作需要执行多次SQL,使用存储过程比单纯SQL语句执行要快。可以用一个“execute 存储过程名 参数”命令来调用存储过程。
2.语法
–创建存储过程
create proc 存储过程名字
as
语句
–修改存储过程
alter proc 存储过程名字
as
语句
–卸载存储过程
drop proc 存储过程名字
–调用存储过程
exec 存储过程名称
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.知其然,不知其所以然