时间:2021-07-01 10:21:17 帮助过:11人阅读
创建
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 初步认识存储过程
标签:它的 http sql drop exists 性能 语句 add str