存储过程(Stored Procedure)是一组为了完毕特定功能的SQL语句集,经编译后存储在数据库中。用户通过指定存储过程的名字并给定參数(假设该存储过程带有參数)来调用运行它。
MySQL 存储过程是从 MySQL 5.0 開始添加的新功能。大大提高数据库的处理速度。同一时候也能够提高数据库编程的灵活性。

过程:封装起来的若干条语句,调用时这些封装体运行。把此过程存储到数据库中即存储过程.

函数:是一个有返回值的“过程”。

过程:没有返回值的函数。

存储过程的长处:

1、存储过程增强了SQL语言的功能和灵活性(能够SQL编程,能使用变量,表达式、控制结构体)
2、存储过程能实现较快的运行速度。

(存储过程要比批处理的运行速度快非常多,由于存储过程是预编译的。在首次运行一个存储过程时查询,优化器对其进行分析优化,而且给出终于被存储在系统表中的运行计划。

而批处理的Transaction-SQL语句在每次运行时都要进行编译和优化,速度相对要慢一些。

3、存储过程能过降低网络流量。针对同一个数据库对象的操作(如查询、改动)。假设这一操作所涉及的Transaction-SQL语句被组织程存储过程,那么当在客户计算机上调用该存储过程时,网络中传送的仅仅是该调用语句,从而大大添加了网络流量并降低了网络负载。

4、存储过程可被作为一种安全机制来充分利用。

系统管理员通过运行某一存储过程的权限进行限制。可以实现对对应的数据的訪问权限的限制。避免了非授权用户对数据的訪问。保证了数据的安全。

5、存储过程同意标准组件是编程。

存储过程被创建后。能够在程序中被多次调用。而不必又一次编写该存储过程的SQL语句。

并且数据库专业人员能够随时对存储过程进行改动,相应用程序源码毫无影响。

存储过程的创建:
DELIMITER $$  //定义分隔符
CREATE PROCEDURE p() //p为过程名
BEGIN
--sql语句 //封装语句体
END $$
查看已有的存储过程:show procedure status \G;
调用存储过程:call 存储过程名称();
删除存储过程:drop procedure 存储过程名称;

变量声明:存储过程中用declare声明变量
格式:declare 变量名 变量类型 [default 默认值]
存储过程中,变量能够在SQL语句中合法的运算。如+ - * /
运算结果怎样赋值  set 变量 := 表达式
存储过程传參:存储过程的括号中,能够声明參数。 语法是 create procedure p([in/out/inout] 參数名  參数类型 ..)
in  out  inout具体分析见博文(MySQL
存储过程參数使用方法 in, out, inout


实例一:创建 运算 赋值
CREATE PROCEDURE p1()
BEGIN
DECLARE age INT DEFAULT 18;
DECLARE height INT DEFAULT 180;
SET age := age +20;
SELECT CONCAT('年龄是', age, '身高是', height);
END$$


实例二 :if/else 控制结构
CREATE PROCEDURE p2()
BEGIN
DECLARE age INT DEFAULT 18;
DECLARE height INT DEFAULT 180;
IF age >= 18 THEN
SELECT "已成年";
ELSE
SELECT "未成年";
END IF;
END$$


实例三:while/do 控制结构
求1-100的和
CREATE PROCEDURE p3()
BEGIN
DECLARE total INT DEFAULT 0;
DECLARE num INT DEFAULT 0;
WHILE num<=100 DO
SET total := num + total;
SET num := num + 1;
END WHILE;
SELECT total;
END$$

实例四:case 控制结构
CREATE PROCEDURE p4()
BEGIN
DECLARE num INT DEFAULT 0;
SET num := FLOOR(4*RAND());
CASE num
WHEN 1 THEN SELECT "cat";
WHEN 2 THEN SELECT "dog";
WHEN 3 THEN SELECT "sheep";
ELSE SELECT "pig";
END CASE;
END$$

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvZ3V1Z2xlMjAxMA==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">


实例五:repeat循环
CREATE PROCEDURE p5()
BEGIN
DECLARE num INT DEFAULT 0;
DECLARE total INT DEFAULT 0;
REPEAT
SET total = num + total;
SET num := num + 1;
UNTIL num>100 END REPEAT;
SELECT total;
END$$

版权声明:本文博主原创文章,博客,未经同意不得转载。

熟知MySQL存储过程的更多相关文章

  1. 《MySQL 存储过程编程》-读书笔记

    本书结构: 第一部分:存储编程基础 第1章:存储过程程序基础 第2章:MySQL存储编程指南 第3章:语言基础 第4章:语句块 第5章:在存储程序中使用SQL 第一章:MySQL存储程序介绍 存储程序 ...

  2. MySQL存储过程(转)

    一.MySQL 创建存储过程 "pr_add" 是个简单的 MySQL 存储过程,这个存储过程有两个 int 类型的输入参数 "a"."b" ...

  3. MySql存储过程

    MySQL 存储过程 ```sql CREATE PROCEDURE myprocedure (IN para01 INTEGER) BEGIN DECLARE var01 CHAR(10); IF ...

  4. mysql存储过程和存储函数

    mysql存储过程和存储函数 存数函数代码示例: DROP PROCEDURE IF EXISTS calc_ci_day_suc_rate; delimiter // CREATE FUNCTION ...

  5. mysql存储过程编写-入门案例-遁地龙卷风

    (-1)写在前面 这篇文章只是简要的叙述了mysql存储过程编写的基本概念. 我使用的mysql版本是5.7.9-log. 参照<<深入浅出MySQL>>. (0) delim ...

  6. MySQL存储过程动态SQL语句的生成

    用Mysql存储过程来完成动态SQL语句,使用存储过程有很好的执行效率: 现在有要求如下:根据输入的年份.国家.节假日类型查询一个节假日,我们可以使用一般的SQL语句嵌入到Java代码中,但是执行效率 ...

  7. MySQL 存储过程

    MySQL 存储过程 存储过程是通过给定的语法格式编写自定义的数据库API,类似于给数据库编写可执行函数. 简介 存储过程是一组为了完成特定功能的SQL语句集合,是经过编译后存储在数据库中. 存储过程 ...

  8. mysql存储过程详解

    mysql存储过程详解 1.      存储过程简介   我们常用的操作数据库语言SQL语句在执行的时候需要要先编译,然后执行,而存储过程(Stored Procedure)是一组为了完成特定功能的S ...

  9. PHP调用MYSQL存储过程实例

    PHP调用MYSQL存储过程实例 标签: mysql存储phpsqlquerycmd 2010-09-26 11:10 11552人阅读 评论(3) 收藏 举报 实例一:无参的存储过程$conn = ...

随机推荐

  1. [Nuxt] Add CSS Libraries to Nuxt

    You can easily add CSS libraries to Nuxt using yarn or npm to install them, then simply adding them ...

  2. js进阶 12-7 如何知道你是从哪个元素移动到当前元素与事件调用时如何添加额外数据

    js进阶 12-7 如何知道你是从哪个元素移动到当前元素与事件调用时如何添加额外数据 一.总结 一句话总结:event的relatedTarget属性和data属性. 1.如何知道你是从哪个元素移动到 ...

  3. thinkphp自动完成、软删除 和时间戳

    thinkphp自动完成.软删除 和时间戳 一.总结 自动完成:没有手动赋值的情况下进行手动处理 软删除:实现假删除,可以进行恢复 时间戳:系统支持自动写入创建和更新的时间戳字段 二.thinkphp ...

  4. MySQL之SQL mode——检查官

    原文:MySQL之SQL mode--检查官 MySQL升级后代码出bug? 前段时间,测试的MySQL服务器进行了一次升级,从MySQL5.6升级到了MySQL5.7.以为是简单的升级,不会影响到代 ...

  5. 解密Arm中国:全球最具影响力的芯片公司中国布局浮出水面

    经济观察报 记者 陈伊凡 沈怡然 李华清 对于Arm与中国合资公司事宜,5月4日下午,Arm授权的代表邮件回复<经济观察报>称:“合资公司目前刚开始运营”,“我们的重点是让这个新的合资公司 ...

  6. Python数据分析环境和工具

    一.数据分析工作环境 Anaconda: Anaconda(水蟒)是一个科学计算软件发行版,集成了大量常用扩展包的环境,包含了 Python 解释器,conda 包管理工具,以及 NumPy.Pand ...

  7. 【36.86%】【codeforces 558B】Amr and The Large Array

    time limit per test1 second memory limit per test256 megabytes inputstandard input outputstandard ou ...

  8. xml传参

    前端调用后端方法时要传递多个参数,在前端js中拼接xml形式的字符串: var args = "<?xml version='1.0' encoding='utf-8' ?>&q ...

  9. ArcGIS Engine 编辑介绍

    转自原文 ArcGIS Engine 编辑介绍 IWorkspaceEdit接口是ArcGIS Engine 实现空间数据编辑的重要接口,它让程序启动或者停止一个编辑流程,在这个编辑流程内,可以对数据 ...

  10. 【机器学习实战】第2章 k-近邻算法(kNN)

    第2章 k-近邻算法 KNN 概述 k-近邻(kNN, k-NearestNeighbor)算法主要是用来进行分类的. KNN 场景 电影可以按照题材分类,那么如何区分 动作片 和 爱情片 呢? 动作 ...