MySQL存储过程和函数(1)
2020-06-27 本文已影响0人
李白开水
概述
存储过程(Stored Procedure)是在大型数据库系统中,一组为了完成特定功能的SQL 语句集,它存储在数据库中,一次编译后永久有效,用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它。存储过程是数据库中的一个重要对象。在数据量特别庞大的情况下利用存储过程能达到倍速的效率提升
存储过程和函数是事先经过编译并存储在数据库中的一段 SQL 语句的集合,调用存储过程实际上就是就是执行这一段SQL语句。
使用存储过程,可以减少和应用程序之间的交互。
存储函数有返回值,而存储过程没有返回值。
语法
创建存储过程
CREATE PROCEDURE procedure_name ([proc_parameter[,...]])
begin
-- SQL语句
end ;
因为SQL语句要用到一个";",而创建存储过程末尾也需要一个分号,所以在SQL语句使用完分号回车之后,就会直接出错:
image.png
如果把end;写在SQL语句的同一行,也会出错:
image.png
解决办法是新指定一个特殊的分隔符。
使用delimiter + 分隔符
来指定。
将分隔符指定为美元符号'$':
重新创建存储过程:
image.png
调用存储过程
call procedure_name() ;
注意分隔符已经指定为'$'符号了。
image.png
查询存储过程
-- 查询db_name数据库中的所有的存储过程
select name from mysql.proc where db='db_name';
-- 查询存储过程的状态信息
show procedure status;
show procedure status\G;
-- 查询某个存储过程的定义
show create procedure test.pro_test1 \G;
第一种方式:
image.png
这个过程实际上是从MySQL数据结构中的表proc中查询的,所以要指定数据库的名字。
删除存储过程
DROP PROCEDURE [IF EXISTS] sp_name ;
image.png
再查询一下存储过程:
image.png
已经没有啦~