参考: https://www.cnblogs.com/free-coder/p/4773691.html
https://baike.baidu.com/item/%E5%AD%98%E5%82%A8%E8%BF%87%E7%A8%8B/1240317?fr=aladdin
https://www.cnblogs.com/NanoDragon/p/13532263.html
什么是 存储过程?
存储过程即存储在数据库中的一组 sql 语句的集合,在启动时只编译一次,后面就直接调用即可
一、存储过程实现和使用
mysql> DELIMITER //
mysql> create procedure my_proced_test()
-> select * from config;
-> //
Query OK, 0 rows affected (0.03 sec)
mysql> call my_proced_test()//
mysql> DELIMITER ;
mysql> show procedure status;
mysql> drop procedure my_proced_test ;
Query OK, 0 rows affected (0.01 sec)
1、先自定义分隔符
因为过程中默认的分割符是【;】,但是在自定义的存储过程中的 sql 语句中也会使用到 【;】,为了区分开来必须先定义一个新的分隔符,例如使用【//】
mysql> DELIMITER //
2、实现存储过程
my_proced_test() 为自定义存储过程名称,中间也可以自定义参数,用法类似于函数
mysql> create procedure my_proced_test()
-> select * from config;
-> //
3、使用存储过程
call 你的存储过程名称即可
mysql> call my_proced_test()//
4、恢复分隔符
mysql> DELIMITER ;
二、存储过程的分类
1、系统存储过程
以sp_开头,用来进行系统的各项设定.取得信息.相关管理工作
2、本地存储过程
用户自定义的 存储过程,例如上面我们自己实现的那个,自定义名称的不要以 【sp_】 开头
3、临时存储过程
。。。等等
三、存储过程的特点 以及和 函数的区别
1、存储过程的特点:
1、重复使用
-创建时编译一次,后面可直接调用
2、很强的灵活性
-可以完成复杂的判断和较复杂的运算,SQL语句和程序代码语句的分离,可以提高程序代码的可读性
3、安全性高
-可设定只有某些用户才具有对指定存储过程的使用权
4、减少网络流量
存储过程位于服务器上,调用的时候只需要传递存储过程的名称以及参数就可以了,因此降低了网络传输的数据量。
2、存储过程 和 函数的区别
存储过程和函数是事先经过编译并存储在数据库中的一段 SQL 语句的集合,简化工作。
相同点:
都是一组事先编译的 可重复的 sql 集合。
不同点:
1、标识不同
函数调用方式是 function, 存储过程是 procedure
2、返回值
函数有返回值,存储过程没有
3、调用方式
函数使用 select ,存储过程使用 call
4、参数类型
函数参数 只能是 IN 类型,存储过程可以是 IN 、OUT、 INOUT