存储过程

Posted autointerface

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了存储过程相关的知识,希望对你有一定的参考价值。

存储过程是程序化的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)

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

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

技术图片

 

 技术图片

 

 

以上是关于存储过程的主要内容,如果未能解决你的问题,请参考以下文章

Java调用SQL Server的存储过程详解(转)

如何将 r ggplot 图存储为 html 代码片段

sql 这些代码片段将演示如何逐步使用PolyBase。你应该有一个blob存储和存储秘密方便

从Oracle存储过程Oracle 11g发送邮件

mybatis 存储过程

Sublime Text自定制代码片段(Code Snippets)