MySQL 初步认识存储过程
Posted Tz兔子
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MySQL 初步认识存储过程相关的知识,希望对你有一定的参考价值。
创建一个简单的存储过程
基本的操作
1 /*查询数据库全部的存储过程*/ 2 show procedure status; 3 4 /*查询都一个存储过程*/ 5 show create procedure tes1; 6 7 /*创建一个存储过程*/ 8 CREATE PROCEDURE test1; 9 10 /* 删除一个存储过程 【没有括号()】 */ 11 DROP PROCEDURE test1; 12 13 /*执行一个存储过程 【不管有没有参数都必须有括号】*/ 14 CALL test1();
创建
1 DROP PROCEDURE `proc_test`( 2 IN a int, 3 IN b int, 4 OUT sum int 5 ) 6 BEGIN 7 DECLARE c int; 8 if a is null then set a = 0; 9 end if; 10 11 if b is null then set b = 0; 12 end if; 13 14 set sum = a + b; 15 END;
执行以上存储结果,验证是否正确,如下图,结果OK:
set @b=5; --执行 call proc_adder(2,@b,@s); select @s as sum;
存储过程中的控制语句
IF语句:
1 DROP PROCEDURE IF EXISTS stutse; 2 /*存储IF的使用*/ 3 CREATE PROCEDURE stutse ( 4 IN ax INT 5 ) 6 BEGIN 7 DECLARE c VARCHAR(30); 8 9 IF ax = 0 THEN 10 SET c ="我是C,ax为0"; 11 ELSEIF ax = 1 THEN 12 SET c = "我是C,ax为1"; 13 ELSE 14 SET c ="我是C"; 15 END if; 16 SELECT c; 17 18 END; 19 20 SET @ax=4; 21 CALL stutse(@ax);
CASE语句:
1 DROP PROCEDURE IF EXISTS test2; 2 /*存储case的使用*/ 3 CREATE PROCEDURE test2( 4 in a INT 5 ) 6 BEGIN 7 DECLARE b VARCHAR(50); 8 9 CASE a 10 WHEN 0 THEN 11 SET b = "000"; 12 WHEN 1 THEN 13 set b = "111"; 14 ELSE 15 SET b = "bbbb"; 16 END CASE; 17 18 SELECT b; 19 END; 20 21 SET @a=2; 22 CALL test2(@a);
存储过程弊端
不同数据库,语法差别很大,移植困难,换了数据库,需要重新编写;
不好管理,把过多业务逻辑写在存储过程不好维护,不利于分层管理,容易混乱,一般存储过程适用于个别对性能要求较高的业务,其它的必要性不是很大;
...
以上是关于MySQL 初步认识存储过程的主要内容,如果未能解决你的问题,请参考以下文章