1、存储过程
语法
CREATE [DEFINER = user] PROCEDURE sp_name ([proc_parameter[,...]]) [characteristic ...] routine_body proc_parameter: [ IN | OUT | INOUT ] param_name type
2、自定义函数
CREATE [DEFINER = user] FUNCTION sp_name ([func_parameter[,...]]) RETURNS type [characteristic ...] routine_body func_parameter: param_name type
3、存储过程与自定义函数区别
存储过程实现的过程要复杂一些,而函数的针对性较强;
存储过程可以有多个返回值,而自定义函数只有一个返回值;
存储过程一般独立的来执行,而函数往往是作为其他SQL语句的一部分来使用;
存储过程说白了就是把经常使用的SQL语句或业务逻辑封装起来,预编译保存在数据库中,当需要的时候从数据库中直接调用,省去了编译的过程.提高了运行速度;
同时降低网络数据传输量
4、SHOW STATUS 、SHOW CREATE 以及系统的information_schema表
- MySQL中可以使用 SHOW STATUS 语句或 SHOW CREATE 语句查看存储过程和函数的状态信息 ,也可以直接从系统的information_schema中查询。
-
CREATE PROCEDURE test_1(IN invalue INT(11),OUT outvalue INT(11)) BEGIN set outvalue = 100 * invalue; END; CREATE FUNCTION test_2(invalue INT(11))RETURNS INT(11) BEGIN RETURN (100 * invalue); END; -- 查看状态 SHOW PROCEDURE STATUS; SHOW PROCEDURE STATUS LIKE 'test_%'; SHOW FUNCTION STATUS; -- 查看定义 SHOW CREATE PROCEDURE test_1; SHOW CREATE FUNCTION test_2; -- information_schema.Routines表中查看 SELECT * FROM information_schema.ROUTINES where ROUTINE_NAME='test_1';