【MySQL学习篇】--- 存储过程

【MySQL学习篇】— 存储过程

什么是存储过程?

存储过程是一组SQL语句操作的集合,就相当于把一组SQL语句封装到“函数”里面,直接调用就能得到结果,不需要了解表结构。

例如:给员工加薪

#给员工加薪:(加薪的金额salary,员工编号id)
UPDATE emp SET salary=salary+500 WHERE id=3;

存储过程语法

#存储过程语法:create procedure 存储过程名(参数名1 参数类型1,参数名2…)

DELIMITER // #分隔符,表示一个整体,到下一个 // 结束
CREATE PROCEDURE 存储过程名(IN 输入参数名 参数类型,OUT 输出参数名 参数类型)
BEGIN
	代码块;
END//
DELIMITER;

#删除存储过程(删除前判断改存储过程是否存在):
DROP PROCEDURE 【 IF EXISTS 】存储过程名;

#调用存储过程:call 存储过程名(实参);

实现加薪

DELIMITER //
CREATE PROCEDURE addSalary(money FLOAT,idd BIGINT)
BEGIN
	UPDATE emp SET salary=salary+money WHERE id=idd;
END//
DELIMITER;
#调用
call addSalary(500,3);

带返回值的存储过程

#getSum实现求和功能  out 表示返回值
DELIMITER //
CREATE PROCEDURE getSum(IN i FLOAT,IN j FLOAT,OUT result FLOAT)
BEGIN
	SET result=i+j;
END//
DELIMITER ;

带 if……else if…… 的存储过程

DELIMITER //
CREATE PROCEDURE buy(money FLOAT)
BEGIN
	
	IF money>500 THEN
		SELECT '买保时捷' as '买啥';
	ELSEIF money>300 THEN
		SELECT '买宝马';
	ELSEIF money>10 THEN
		SELECT '买奥拓';
	ELSE SELECT '骑摩拜';
	END IF;
	
END//
DELIMITER;

选择分支 case

DELIMITER //
CREATE PROCEDURE pro_case(i INT)
BEGIN

	CASE i 
		WHEN 1 THEN
			SELECT '星期一';
		WHEN 2 THEN
			SELECT '星期二';
		ELSE 
			SELECT '你猜周几';
	END CASE;

END//
DELIMITER;

while循环

#往表中循环加入数据
DELIMITER //
CREATE PROCEDURE proSum(i INT)
BEGIN

	DECLARE a  INT DEFAULT 1;#声明一个变量
	SET a=2;
	WHILE a<=i DO 
		INSERT INTO `person` SET `name`='test',weight=10;
		 SET a = a+1;#实现加 1
	END WHILE;

END//
DELIMITER;

loop 循环

CREATE PROCEDURE 存储过程名()
BEGIN
	loop循环别名:LOOP
		循环体
		
		LEAVE loop循环别名
	END LOOP;
END;

#往表中循环加入数据
DELIMITER //
CREATE PROCEDURE testLoop(i INT)
BEGIN
	
	DECLARE a INT DEFAULT 1;
	testLoop1:LOOP
		INSERT INTO person SET `name` ='admin',weight =200;
		SET a=a+1;
		IF a>i  THEN 
			LEAVE testloop1;
		END IF;
	END LOOP;
	
END//
DELIMITER;

猜你喜欢

转载自blog.csdn.net/DREAM_yao/article/details/108169004