前言
今天项目需要写个存储过程,长时间没有写存储过程有点生疏和忘记了,所以想着写一篇文章来总结下存储过程的一些相关知识,算是复习一下加深记忆。
一、基本概念
这里有两个概念:存储过程和存储函数。
存储过程和存储函数是事先经过编译并存储在数据库中的一段SQL语句的集合,调用存储过程和函数可以简化应用开发人员的工作,减少数据在数据库和应用服务器之间的传输,能够提高数据库的处理效率。存储过程在高并发数据中使用的比较多。
存储过程和存储函数的区别在于存储函数是必须有返回值的,而存储过程并没有。存储过程的参数可以是in ,out ,inout类型,存储函数的参数类型只能是in。所以可以说存储函数是一个有返回值的存储过程,而存储过程是一个没有返回值的存储函数。
二、存储过程相关操作
1、创建、调用存储过程
创建存储过程的基本语法:
create procedure procedure_name([params,.....]) begin SQL语句 end; 复制代码
调用存储过程的语法如下
call procedure_name(); 复制代码
实例:
首先创建一个employee表,并插入数据:
DROP TABLE IF EXISTS `employee`; CREATE TABLE `employee` ( `id` int(11) NOT NULL AUTO_INCREMENT, `lastName` varchar(255) DEFAULT NULL, `email` varchar(255) DEFAULT NULL, `departmentID` int(11) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8; -- ---------------------------- INSERT INTO `employee` VALUES ('1', '亚索', '123qq.com', '201'); INSERT INTO `employee` VALUES ('2', '李青', '12345@qq.com', '201'); INSERT INTO `employee` VALUES ('3', '艾欧尼亚', '774855@qq.com', '203'); INSERT INTO `employee` VALUES ('4', '德玛西亚', '6565@qq.com', '203' 复制代码
employee表结果如下:
创建一个存储过程:
create procedure demo1() begin select * from employee end$ 复制代码
调用刚刚创建的存储过程:
call demo1()$ 复制代码
2、查看和删除存储过程
查看存储过程的基本语法
查询指定数据库的所有的存储过程 如果不指明type 则默认shi存储过程 select name from mysql.proc where db='数据库名字 and type = 'PROCEDURE' 复制代码
示例:
select name from mysql.proc where db='jdbc'$ 复制代码
查看指定存储过程的定义:
show create procedure [数据库名].存储过程名 \G$ 复制代码
查看存储过程的状态:
show procedure status \G$ 复制代码
删除存储过程:
drop procedure 存储过程名称$ 复制代码
三、存储函数相关操作
存储函数的基本语法与存储过程基本相似:
create function function_name([params type,.....]) returns type begin ..... end; 复制代码
实例,定义一个存储过程,返回刚刚创建的employee表中departmentID为203的数据有几条
create function numofemployee(department_ID int) returns int begin declare count int; select count(*) into count from employee where departmentID=department_ID ; return count; end$ 复制代码
调用存储函数与存储过程有点不一样:
select function_name(params)$ 复制代码
查看存储函数的基本语法,查询指定数据库的所有的存储函数:
select name from mysql.proc where db = '数据库名字' and type= 'FUNCTION' 复制代码
查看存储过程的状态:
show function status \G$ 复制代码
删除存储函数基本语法:
drop function fun_name$ 复制代码
总结
这篇文章就是介绍一下关于存储过程和存储函数的一些基本概念和相关的操作,下一篇文章将会着重介绍下存储过程的一些相关语法和使用。