存储过程(Stored Procedure)是一种在数据库中存储复杂程序,以便外部程序调用的一种数据库对象。
存储过程是为了完成特定功能的SQL语句集,经编译创建并保存在数据库中,用户可通过指定存储过程的名字并给定参数(需要时)来调用执行。
存储过程思想上很简单,就是数据库 SQL 语言层面的代码封装与重用。
存储过程的优点
1、存储过程可封装,并隐藏复杂的商业逻辑。
2、存储过程可以回传值,并可以接受参数。
3、存储过程无法使用 SELECT 指令来运行,因为它是子程序,与查看表,数据表或用户定义函数不同。
4、存储过程可以用在数据检验,强制实行商业逻辑等。
存储过程的缺点
1、存储过程,往往定制化于特定的数据库上,因为支持的编程语言不同。当切换到其他厂商的数据库系统时,需要重写原有的存储过程。
2、存储过程的性能调校与撰写,受限于各种数据库系统。
下面通过实例来演示存储过程的使用
背刺实例演示将通过mysql命令行来完成
1、创建存储过程
(通过控制台进入mysql命令行,然后选择数据库)
创建存储过程:
这里创建的存储过程是用来完成循环插入数据的
DELIMITER //(因为存储过程不是一行命令就可以完成的,所以这里先将mysql命令行的结束符改成"//") CREATE PROCEDURE proc(IN sname VARCHAR(20),IN pwd VARCHAR(5),IN el VARCHAR(32),IN start INT,IN end INT) begin DECLARE var INT; DECLARE myname VARCHAR(30); SET var=start; while var<end do SET myname = CONCAT(sname,LPAD(var,3,'0')); insert into test_pdo (username,password,email) value(myname,md5(pwd),el); SET var=var+1; end while; end // DELIMITER ;
2、使用存储过程
CALL proc('test','123456','test@adimin.com',1,3);//使用存储过程往表中插入两条数据
3、删除存储过程
一个存储过程只能被创建一次,如果想要用相同的名字来创建存储过程,必须把之前创建的存储过程删掉,然后才能创建。删除存储过程的命令:
DROP PROCEDURE IF EXISTS proc;
整个存储过程的使用流程: