欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

mysql存储过程

程序员文章站 2022-06-04 07:51:04
...

1.存储过程之加法

drop PROCEDURE if EXISTS pr_add;
create PROCEDURE pr_add(a int, b int)
BEGIN 
	DECLARE c int;
	if a < 100 then set a = a + 1;
	end if;
	if b > 3 then set b = b + 3;
	end if;
	set c = a + b;
	select c as sum;
end

调用

call pr_add(12,20);

或者

set @a = 12;
set @b  = 32;
call pr_add(@a, @b);

2.存储过程之if

drop PROCEDURE if exists getBiggerOne;
create PROCEDURE getBiggerOne(a int, b int)
BEGIN
	IF a < b THEN
		SELECT b as bigger;
	ELSEIF a > b THEN
		SELECT a as bigger;
	ELSE
		SELECT b as bigger;
	END IF;
END

3.存储过程之case

drop PROCEDURE if exists getRange;
create PROCEDURE getRange(a int)
BEGIN
	DECLARE rangeStr varchar(100);
	case a
	when 0 then
		set rangeStr = '0';
	when 1 then
		set rangeStr = '1';
	when 2 then
		set rangeStr = '2';
	ELSE
		set rangestr = 'not 0 1 2';
	end case;
	SELECT rangeStr;
END

4.存储过程之while

drop PROCEDURE if exists sumn;
create PROCEDURE sumn(n int)
BEGIN
	DECLARE sum int;
	DECLARE i int;
	set sum = 0;
	set i = 0;
	while i<= n DO
		set sum = sum + i;
		set i = i + 1;
	end WHILE;
	SELECT sum;
END

5.存储过程之输入与输出(输入和输出分开)

drop PROCEDURE if exists sumn;
create PROCEDURE sumn(IN n int, OUT s int)
BEGIN
	DECLARE sum int;
	DECLARE i int;
	set sum = 0;
	set i = 0;
	while i<= n DO
		set sum = sum + i;
		set i = i + 1;
	end WHILE;
	set s = sum;
END

调用

call sumn(4,@s);
select @s;

6.存储过程之输入输出混用:

drop PROCEDURE if exists swapnum;
create PROCEDURE swapnum(INOUT a int, INOUT b int)
BEGIN
	DECLARE n int DEFAULT 0;
	set n = a;
	set a = b;
	set b = n;
END

调用

set @a = 4,@b = 3;
call swapnum(@a, @b);
SELECT @a,@b;

相关标签: 存储过程