什么是存储过程

简单的说, 就是一组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. Python日期带时区转换工具类总结

    目录 1.背景 2. 遇到的坑 3. 一些小案例 3.1 当前日期.日期时间.UTC日期时间 3.2 昨天.昨天UTC日期.昨天现在这个时间点的时间戳 3.3 日期转时间戳 3.4 时间戳转日期 3. ...

  2. 前端vue单个文件上传支持图片,压缩包以及文件 , 下载完整代码请访问uni-app插件市场址:https://ext.dcloud.net.cn/plugin?id=13066

    前端vue单个文件上传支持图片,压缩包以及文件 , 下载完整代码请访问uni-app插件市场址:https://ext.dcloud.net.cn/plugin?id=13066 效果图如下: 使用方 ...

  3. Transformer算法的应用

    目录 1. 引言 2. 技术原理及概念 2.1. 基本概念解释 2.2. 技术原理介绍 2.3. 相关技术比较 3. 实现步骤与流程 3.1. 准备工作:环境配置与依赖安装 3.2. 核心模块实现 4 ...

  4. 自然语言处理 Paddle NLP - 文本翻译技术及应用-理论

    什么是机器翻译 机器翻译质量的自动评价 从统计机器翻译到神经网络机器翻译 多语言/多领域/多模态的翻译应用 神经网络机器翻译面临的挑战 视频:https://aistudio.baidu.com/ai ...

  5. Kubernetes(k8s) Web-UI界面(二):部署和访问Kuboard

    目录 一.系统环境 二.前言 三.Kuboard简介 四.部署Kuboard 五.访问kuboard 六.总结 七.附加信息 一.系统环境 本文主要基于Kubernetes1.21.9和Linux操作 ...

  6. 基于JavaFX的扫雷游戏实现(一)——整体概述

    我在不要更新挑战中坚持了一年,你也来试试吧(咕咕咕)!   好言归正传,本次更新带来的是经典游戏扫雷,基于JavaFX实现.篇幅有限,文章主要介绍核心操作实现,不会列出所有代码.需要完整源码或是想预览 ...

  7. Codeforces Round #880 (Div. 2) A-D

    A 代码 #include <bits/stdc++.h> using namespace std; using ll = long long; int cnt[107]; bool so ...

  8. 吴恩达优化算法 (Optimization algorithms)笔记

    Mini-batch 梯度下降(Mini-batch gradient descent) 使用batch梯度下降法,一次遍历训练集只能让你做一个梯度下降,使用mini-batch梯度下降法,一次遍历训 ...

  9. 如何在docker中创建postgresql数据库并使用prisma进行连接

    在docker中创建postgresql # docker 创建 postgres docker pull postgres # 创建容器 # ~/study/db/postgres 是本地的文件映射 ...

  10. 从零玩转SpringBoot3-快速入门

    一.简介 1.前置知识 ​ ● Java17 ​ ● Spring.SpringMVC.MyBatis ​ ● Maven.IDEA 2.环境要求 环境&工具 版本(or later) Spr ...