[Mysql] 存储过程简单理解
什么是存储过程
简单的说, 就是一组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] 存储过程简单理解的更多相关文章
- MySql存储过程简单实例
转自:http://www.cnblogs.com/zhuawang/p/4185302.html ********************* 创建表 ************************ ...
- mysql 存储过程简单实例
一.什么是存储过程 存储过程(Stored Procedure)是在大型数据库系统中,一组为了完成特定功能的SQL 语句集,存储在数据库中,经过第一次编译后再次调用不需要再次编译,用户通过指定存储过程 ...
- mysql 存储过程简单学习
转载自:http://blog.chinaunix.net/uid-23302288-id-3785111.html ■存储过程Stored Procedure 存储过程就是保存一系列SQL命令的集合 ...
- mysql存储过程简单例子
1.之前经常在oracle数据库中使用存储过程,换到mysql后用的不多,但是有时候也用,大致记录一下,基本和oracle的一样. CREATE DEFINER = `root`@`%` PROCED ...
- Mysql存储过程简单应用
因为很久没写过存储过程了,语法也不记得了,靠百度后,解决了当前问题,这里就简单记录一下. CREATE PROCEDURE pro1() BEGIN DECLARE i int; DECLARE db ...
- mysql存储过程简单用法
show procedure status 查看所有存储过程 <!-- 简单存储过程 --> 先将结束符改成// delimiter // create procedure query ...
- MySql 存储过程实例(附完整注释)
将下面的语句复制粘贴可以一次性执行完,我已经测试过,没有问题! MySql存储过程简单实例: ...
- MySql 存储过程实例 - 转载
MySql 存储过程实例 将下面的语句复制粘贴可以一次性执行完,我已经测试过,没有问题! MySql存储过程简单实例: ...
- MySql 存储过程实例(附完整注释)(转)
MySql 存储过程实例(附完整注释) 将下面的语句复制粘贴可以一次性执行完,我已经测试过,没有问题! MySql存储过程简单实例: ...
- MySQL 存储过程理解
/********************************************************************************* * MySQL 存储过程理解 * ...
随机推荐
- deepin系统更新谷歌浏览器chrome的方法
deepin系统更新谷歌浏览器chrome的方法 1 为什么要更新谷歌浏览器谷歌浏览器更新频繁,隔一段时间不更新,打开浏览器时会自动弹出一个提示更新的窗口,有点烦,如果使用python自动处理程序时, ...
- “AI Earth”人工智能创新挑战赛:助力精准气象和海洋预测Baseline[1]、NetCDF4使用教学、Xarray 使用教学,针对气象领域.nc文件读取处理
1."AI Earth"人工智能创新挑战赛:助力精准气象和海洋预测Baseline[1].NetCDF4使用教学.Xarray 使用教学,针对气象领域.nc文件读取处理 比赛官网: ...
- 使用python连接阿里云iot平台时遇到的问题及解决方法(on_connect打印的rc值为9,上传物模型值)
使用python连接阿里云iot平台时遇到的问题及解决方法 on_connect打 ...
- Kotlin协程-那些理不清乱不明的关系
Kotlin的协程自推出以来,受到了越来越多Android开发者的追捧.另一方面由于它庞大的API,也将相当一部分开发者拒之门外.本篇试图从协程的几个重要概念入手,在复杂API中还原出它本来的面目,以 ...
- 01-C语言基础语法
目录 一. C语言发展史 二. 数据类型 三. 常量和变量 四. 字符串和转义字符 五. 选择语句 六. 循环语句 七. 函数 一. C语言发展史 1963 年ALGOL 60 作为C语言最早的模型, ...
- 利用生成式预训练Transformer实现文本分类和命名实体识别
目录 1. 引言 2. 技术原理及概念 2.1 基本概念解释 2.2 技术原理介绍 3. 实现步骤与流程 3.1 准备工作:环境配置与依赖安装 3.2 核心模块实现 3.3 集成与测试 4. 应用示例 ...
- XXE漏洞详解
XML外部实体注入--XXE漏洞详解 简单来说一下这个XXE漏洞,在这之前我也阅读了很多关于XXE漏洞的文章,发现有一小部分文章题目是 "XXE外部实体注入" 这样的字眼,我想这样 ...
- k8s驱逐篇(6)-kube-controller-manager驱逐-NodeLifecycleController源码分析
概述 k8s v1.16版本中NodeController已经分为了NodeIpamController与NodeLifecycleController,本文主要介绍NodeLifecycleCont ...
- easyexce报错BeanMap$Generator
class net.sf.cglib.core.DebuggingClassWriter overrides final method visit 这两个报错都可以在一起解决,因为这是由于Jar包冲突 ...
- Linux系统运维之Hadoop、Hive、Flume数据处理
配置环境 主机名 IP 备注 Hadoop-Data01 192.168.0.194 Hadoop-Master/Hive/Mysql/Flume-Agent Hadoop-Data02 192.16 ...