1,概念
存储过程(Stored Procedure)是一种在数据库中存储复杂程序,以便外部程序调用的一种数据库对象。
存储过程是为了完成特定功能的SQL语句集,经编译创建并保存在数据库中,用户可通过指定存储过程的名字并给定参数(需要时)来调用执行。
存储过程思想上很简单,就是数据库 SQL 语言层面的代码封装与重用。
2,作用
- 存储过程可封装,并隐藏复杂的商业逻辑
- 存储过程可以回传值,并可以接受参数
- 存储过程无法使用 SELECT 指令来运行,因为它是子程序,与查看表,数据表或用户定义函数不同。
- 存储过程可以用在数据检验,强制实行商业逻辑等。
缺点,存储过程,往往定制化于特定的数据库上,因为支持的编程语言不同。当切换到其他厂商的数据库系统时,需要重写原有的存储过程。
3,存储过程的种类
① 系统存储过程:以sp_开头,用来进行系统的各项设定.取得信息.相关管理工作。
② 本地存储过程:用户创建的存储过程是由用户创建并完成某一特定功能的存储过程,事实上一般所说的存储过程就是指本地存储过程。
③ 临时存储过程:分为两种存储过程:
一是本地临时存储过程,以井字号(#)作为其名称的第一个字符,则该存储过程将成为一个存放在tempdb数据库中的本地临时存储过程,且只有创建它的用户才能执行它;
二是全局临时存储过程,以两个井字号(##)号开始,则该存储过程将成为一个存储在tempdb数据库中的全局临时存储过程,全局临时存储过程一旦创建,以后连接到服务器的任意用户都可以执行它,而且不需要特定的权限。
④ 远程存储过程:在SQL Server2005中,远程存储过程(Remote Stored Procedures)是位于远程服务器上的存储过程,通常可以使用分布式查询和EXECUTE命令执行一个远程存储过程。
⑤ 扩展存储过程:扩展存储过程(Extended Stored Procedures)是用户可以使用外部程序语言编写的存储过程,而且扩展存储过程的名称通常以xp_开头
4,存储过程的创建
// 存储过程就是具有名字的一段代码,用来完成一个特定的功能。
// 创建的存储过程保存在数据库的数据字典中。
CREATE PROC[EDURE] 存储过程名
@参数1 [数据类型]=[默认值] [OUT | IN | INOUT]
@参数2 [数据类型]=[默认值] [OUT | IN | INOUT]
AS
SQL语句
EXEC 过程名[参数]
默认情况下,存储过程和默认数据库相关联,如果想指定存储过程创建在某个特定的数据库下,那么在过程名前面加数据库名做前缀。 在定义过程时,使用 DELIMITER $$ 命令将语句的结束符号从分号 ; 临时改为两个 $$,使得过程体中使用的分号被直接传递到服务器,而不会被客户端(如mysql)解释。
5,变量
局部变量的声明放在存储过程体的开始:DECLAREvariable_name [,variable_name...] datatype [DEFAULT value];
变量的赋值:SET 变量名 = 表达式值 [,variable_name = expression ...]
用户变量名一般以@开头
6,存储过程的删除
Drop 存储过程名
参考文献:https://www.runoob.com/w3cnote/mysql-stored-procedure.html