什么是存储过程

简单的说, 就是一组SQL语句集, 功能强大, 可以实现一些比较复杂的逻辑功能. 其实就和编程语言的面向过程函数一样.

ps: 存储过程与触发器类似, 但存储过程是主动调用, 触发器是触发条件调用.

具有那些特性?

有可以输出输入的参数, 可以声明变量, 有if/else, case, while等流程控制语句. 可以编写复杂的逻辑功能.

特性: 模块化, 封装, 代码复用

速度快,只有首次执行需经过编译和优化步骤,后续被调用可以直接执行,省去以上步骤;

一个简单的存储过程

存储过程名为”Search”, 具有一个返回参数”Count”是INT类型.

-- 删除存储过程
DROP PROCEDURE IF EXISTS `Search`; -- 创建存储过程
CREATE PROCEDURE `Search`(OUT Count INT)
BEGIN
/* 从这里开始写你的sql代码 */
SET Count = 10086;
END; -- 调用存储过程
CALL Search(@Count);
Select @Count; -- 查询存储过程
Show procedure status;

参数

[in/out/inout] 参数名 参数类型 ..

IN = 给参数传入值

OUT = 传参, 传入一个变量, 用于接收存储过程内部返回的数据. 相当于Return, 不过应用在了参数

INOUT = 调用者还可以通过 inout 参数传递值给存储过程,也可以从存储过程内部传值给调用者

流程控制语句示例

While循环

    WHILE i <= n DO
set s = s + i;
set i = i + 1;
END WHILE;

Case 选择

    CASE Numbar
WHEN 0 THEN
set Content = '零';
WHEN 1 THEN
set Content = '壹';
ELSE
set Content = '母鸡啊~';
END CASE;

IF判断; IF / ELSEIF / ELSE

    IF Age = 8 THEN
set Content = '小学生';
ELSEIF Age = 15 THEN
set Content = '初中生';
ELSE
set Content = '猜不透啊~';
END IF;

存储过程利弊

不同数据库,语法差别很大,移植困难,换了数据库,需要重新编写;

不好管理,把过多业务逻辑写在存储过程不好维护,不利于分层管理,容易混乱,一般存储过程适用于个别对性能要求较高的业务,其它的必要性不是很大;

感谢你的阅读

[Mysql] 存储过程简单理解的更多相关文章

  1. MySql存储过程简单实例

    转自:http://www.cnblogs.com/zhuawang/p/4185302.html ********************* 创建表 ************************ ...

  2. mysql 存储过程简单实例

    一.什么是存储过程 存储过程(Stored Procedure)是在大型数据库系统中,一组为了完成特定功能的SQL 语句集,存储在数据库中,经过第一次编译后再次调用不需要再次编译,用户通过指定存储过程 ...

  3. mysql 存储过程简单学习

    转载自:http://blog.chinaunix.net/uid-23302288-id-3785111.html ■存储过程Stored Procedure 存储过程就是保存一系列SQL命令的集合 ...

  4. mysql存储过程简单例子

    1.之前经常在oracle数据库中使用存储过程,换到mysql后用的不多,但是有时候也用,大致记录一下,基本和oracle的一样. CREATE DEFINER = `root`@`%` PROCED ...

  5. Mysql存储过程简单应用

    因为很久没写过存储过程了,语法也不记得了,靠百度后,解决了当前问题,这里就简单记录一下. CREATE PROCEDURE pro1() BEGIN DECLARE i int; DECLARE db ...

  6. mysql存储过程简单用法

    show procedure status 查看所有存储过程 <!--  简单存储过程  --> 先将结束符改成// delimiter // create procedure query ...

  7. MySql 存储过程实例(附完整注释)

    将下面的语句复制粘贴可以一次性执行完,我已经测试过,没有问题! MySql存储过程简单实例:                                                       ...

  8. MySql 存储过程实例 - 转载

    MySql 存储过程实例 将下面的语句复制粘贴可以一次性执行完,我已经测试过,没有问题! MySql存储过程简单实例:                                          ...

  9. MySql 存储过程实例(附完整注释)(转)

    MySql 存储过程实例(附完整注释) 将下面的语句复制粘贴可以一次性执行完,我已经测试过,没有问题! MySql存储过程简单实例:                                   ...

  10. MySQL 存储过程理解

    /********************************************************************************* * MySQL 存储过程理解 * ...

随机推荐

  1. deepin系统更新谷歌浏览器chrome的方法

    deepin系统更新谷歌浏览器chrome的方法 1 为什么要更新谷歌浏览器谷歌浏览器更新频繁,隔一段时间不更新,打开浏览器时会自动弹出一个提示更新的窗口,有点烦,如果使用python自动处理程序时, ...

  2. “AI Earth”人工智能创新挑战赛:助力精准气象和海洋预测Baseline[1]、NetCDF4使用教学、Xarray 使用教学,针对气象领域.nc文件读取处理

    1."AI Earth"人工智能创新挑战赛:助力精准气象和海洋预测Baseline[1].NetCDF4使用教学.Xarray 使用教学,针对气象领域.nc文件读取处理 比赛官网: ...

  3. 使用python连接阿里云iot平台时遇到的问题及解决方法(on_connect打印的rc值为9,上传物模型值)

    使用python连接阿里云iot平台时遇到的问题及解决方法                                                            on_connect打 ...

  4. Kotlin协程-那些理不清乱不明的关系

    Kotlin的协程自推出以来,受到了越来越多Android开发者的追捧.另一方面由于它庞大的API,也将相当一部分开发者拒之门外.本篇试图从协程的几个重要概念入手,在复杂API中还原出它本来的面目,以 ...

  5. 01-C语言基础语法

    目录 一. C语言发展史 二. 数据类型 三. 常量和变量 四. 字符串和转义字符 五. 选择语句 六. 循环语句 七. 函数 一. C语言发展史 1963 年ALGOL 60 作为C语言最早的模型, ...

  6. 利用生成式预训练Transformer实现文本分类和命名实体识别

    目录 1. 引言 2. 技术原理及概念 2.1 基本概念解释 2.2 技术原理介绍 3. 实现步骤与流程 3.1 准备工作:环境配置与依赖安装 3.2 核心模块实现 3.3 集成与测试 4. 应用示例 ...

  7. XXE漏洞详解

    XML外部实体注入--XXE漏洞详解 简单来说一下这个XXE漏洞,在这之前我也阅读了很多关于XXE漏洞的文章,发现有一小部分文章题目是 "XXE外部实体注入" 这样的字眼,我想这样 ...

  8. k8s驱逐篇(6)-kube-controller-manager驱逐-NodeLifecycleController源码分析

    概述 k8s v1.16版本中NodeController已经分为了NodeIpamController与NodeLifecycleController,本文主要介绍NodeLifecycleCont ...

  9. easyexce报错BeanMap$Generator

    class net.sf.cglib.core.DebuggingClassWriter overrides final method visit 这两个报错都可以在一起解决,因为这是由于Jar包冲突 ...

  10. Linux系统运维之Hadoop、Hive、Flume数据处理

    配置环境 主机名 IP 备注 Hadoop-Data01 192.168.0.194 Hadoop-Master/Hive/Mysql/Flume-Agent Hadoop-Data02 192.16 ...