关于存储过程的优点,本文不再阐述。这里只是对创建存储过程时可能遇到的问题做一下简单的分析。


必备基础

这里说的基础,是相关于如何创建一个存储过程的。

  • DELIMITER:分隔符,定界符。

    作用就是:作为命令执行的分隔,例如我们平时使用的;号。我们可以使用delimiter来手动的更改它。

  • PROCEDURE : 创建存储过程的关键字。类似于Table,以及View等。

  • SHOW PROCEDURE STATUS 或者 SHOW PROCEDURE STATUS WHERE DB=’TARGET DATABASE NAME’

    show出创建的存储过程,便于进行浏览。

  • 变量的使用及参数相关:这些都是基础,在这里就不

    重复的造轮子。

示例

先直接看一个例子吧。

mysql> use practice;
Database changed

mysql> show tables;
+--------------------+
| Tables_in_practice |
+--------------------+
| user               |
| userinfo           |
+--------------------+
2 rows in set (0.00 sec)

mysql> select * from user;
+----+--------+
| id | number |
+----+--------+
|  1 |     11 |
|  2 |     22 |
|  3 |     33 |
|  4 |     44 |
|  5 |     55 |
+----+--------+
5 rows in set (0.00 sec)

# 开始存储过程的创建 #
mysql> delimiter $
mysql> drop procedure if exists hi;
    -> create procedure hi()
    -> begin
    -> select * from user;
    -> end$
Query OK, 0 rows affected (0.04 sec)

Query OK, 0 rows affected (0.04 sec)

调用存储过程同样很简单。

mysql> call hi()$
+----+--------+
| id | number |
+----+--------+
|  1 |     11 |
|  2 |     22 |
|  3 |     33 |
|  4 |     44 |
|  5 |     55 |
+----+--------+
5 rows in set (0.00 sec)

案例分析

想必大家会很奇怪,因为

call hi()$

为什么不是’;’号呢?

这里其实我前面已经讲过了,那就是使用DELIMITER可以动态的更改我们的命令执行结束符号。由于在创建存储过程的时候会有很多条SQL语句出现,所以为了不冲突,就将结束符改成了$了。

我们也可以改过来,如下:

mysql> delimiter ;
mysql> call hi();
+----+--------+
| id | number |
+----+--------+
|  1 |     11 |
|  2 |     22 |
|  3 |     33 |
|  4 |     44 |
|  5 |     55 |
+----+--------+
5 rows in set (0.00 sec)

Query OK, 0 rows affected (0.01 sec)

是不是又恢复正常了呢?

需要注意

  • 我在使用存储过程的时候,发现打开终端如果直接创建存储过程的时候,是不能创建的。因为我们必须要先选择一个数据库,然后才能创建一个存储过程。

  • 然后就是存储过程是全局显示的,虽然其是存在于某一个特定的数据库中。

  • 创建存储过程的时候,要先判断命名空间之下的重名否?否则后悔也来不及的。

简单的介绍大致就是这些了。比较简单,但是却非常的重要。

MySQL 存储过程探秘的更多相关文章

  1. MySQL存储过程(转)

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

  2. MySql存储过程

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

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

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

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

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

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

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

  6. MySQL 存储过程

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

  7. mysql存储过程详解

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

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

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

  9. mysql存储过程语法及实例

    存储过程如同一门程序设计语言,同样包含了数据类型.流程控制.输入和输出和它自己的函数库. --------------------基本语法-------------------- 一.创建存储过程cr ...

随机推荐

  1. ●51NOD 1705 七星剑

    题链: http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1705题解: 期望dp,期望的线性性质 (首先对于第k颗星,一定只 ...

  2. JVM指令集介绍

    转载自:http://glutinit.iteye.com/blog/1263446 延伸参考 JVM接收参数和方法调用 void spin() {    int   i;    for (i = 0 ...

  3. Object 类

  4. App上架应用市场,如何攻破安全过检难题

    App的安全过检与众所熟知的安全检测是两个完全不同的概念.首先App行业本身对App安全过检有一定的要求与规范,其次2017年6月1日正式实施的<中国网络安全法>中就曾要求App在渠道上线 ...

  5. 关于ES7中的async/await在客户端和服务端上的实践

    一.前言 在项目中经常遇到处理异步请求的情况,面对层层的嵌套,回调显示那么苍白无力: async / await是ES7的重要特性之一,也是目前社区里公认的优秀异步解决方案,既然这样就用上吧. 二.配 ...

  6. 基于PHP的地址清洗调用案例-快宝开放平台

    快宝地址清洗,纠正错误地址.识别不完整地址.地址补全,并输出结构化地址数据的通用解决方案.广泛应用于快递行业,电商行业,ERP应用等. 快宝开放平台-地址清洗对接API:http://open.kua ...

  7. Junit 注解 类加载器 .动态代理 jdbc 连接池 DButils 事务 Arraylist Linklist hashset 异常 哈希表的数据结构,存储过程 Map Object String Stringbufere File类 文件过滤器_原理分析 flush方法和close方法 序列号冲突问题

    Junit 注解 3).其它注意事项: 1).@Test运行的方法,不能有形参: 2).@Test运行的方法,不能有返回值: 3).@Test运行的方法,不能是静态方法: 4).在一个类中,可以同时定 ...

  8. UDP网络编程

    概念: UDP协议(用户数据报协议)是无连接,不可靠的,无序的.速度比较快, UDP协议以数据报作为数据传输的载体 进行数据传输时,首先将传输的数据定义成数据报(Datagram),在数据报中指明数据 ...

  9. python学习之路前端-jQuery

    jQuery简介      JQuery是继prototype之后又一个优秀的Javascript库.它是轻量级的js库 ,它兼容CSS3,还兼容各种浏览器(IE 6.0+, FF1.5+, Safa ...

  10. Android APT(编译时代码生成)最佳实践

    越来越多第三方库使用apt技术,如DBflow.Dagger2.ButterKnife.ActivityRouter.AptPreferences.在编译时根据Annotation生成了相关的代码,非 ...