存储过程

不羁的心 提交于 2019-12-05 17:36:55

存储过程是程序化的SQL,可以直接操作底层数据表,相比于面向集合的操作方式,能够实现一些更复杂的数据处理。存储过
程可以说是由SQL语句和流控制语句构成的语句集合,它和我们之前学到的函数一样,可以接收输入参数,也可以返回输出参数给调用者,返回计算结果。

 

 Navicat直接按照上面,MYSQL需要用DELIMITER来临时定义新的结束符

 

首先用(//)作为结束符,又在整个存储过程结束后采用了(//)作为结束符号,告诉SQL可以执行了,然后再将结束符还原成默认的(;)

 

 CREATE PROCEDURE `get_hero_scores`( OUT max_max_hp FLOAT, OUT min_max_mp FLOAT, OUT avg_max_attack FLOAT, s VARCHAR(255) ) BEGIN SELECT MAX(hp_max), MIN(mp_max), AVG(attack_max) FROM heros WHERE role_main = s INTO max_max_hp, min_max_mp, avg_max_attack;

调用(参数为'战士')

CALL get_hero_scores(@max_max_hp, @min_max_mp, @avg_max_attack, '战士');
SELECT @max_max_hp, @min_max_mp, @avg_max_attack;

运行结果

 

流程控制

1 IF…THEN…ENDIF(条件判断语句)

2 CASE:CASE语句用于多条件的分支判断

3 LOOP、LEAVE(break)和ITERATE(continue)

4 REPEAT…UNTIL…END REPEAT (do while)

5 WHILE…DO…END WHILE (while)

优点:提前编译,减少网络传输

缺点:不能跨数据库移植,调试维护困难,版本管理困难(比如索引发生变化就会失效),不适合高并发,分库分表,对扩张性要求高

 

 

 

 

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!