MySQL 存储过程探秘
关于存储过程的优点,本文不再阐述。这里只是对创建存储过程时可能遇到的问题做一下简单的分析。
必备基础
这里说的基础,是相关于如何创建一个存储过程的。
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 存储过程探秘的更多相关文章
- MySQL存储过程(转)
一.MySQL 创建存储过程 "pr_add" 是个简单的 MySQL 存储过程,这个存储过程有两个 int 类型的输入参数 "a"."b" ...
- MySql存储过程
MySQL 存储过程 ```sql CREATE PROCEDURE myprocedure (IN para01 INTEGER) BEGIN DECLARE var01 CHAR(10); IF ...
- mysql存储过程和存储函数
mysql存储过程和存储函数 存数函数代码示例: DROP PROCEDURE IF EXISTS calc_ci_day_suc_rate; delimiter // CREATE FUNCTION ...
- mysql存储过程编写-入门案例-遁地龙卷风
(-1)写在前面 这篇文章只是简要的叙述了mysql存储过程编写的基本概念. 我使用的mysql版本是5.7.9-log. 参照<<深入浅出MySQL>>. (0) delim ...
- MySQL存储过程动态SQL语句的生成
用Mysql存储过程来完成动态SQL语句,使用存储过程有很好的执行效率: 现在有要求如下:根据输入的年份.国家.节假日类型查询一个节假日,我们可以使用一般的SQL语句嵌入到Java代码中,但是执行效率 ...
- MySQL 存储过程
MySQL 存储过程 存储过程是通过给定的语法格式编写自定义的数据库API,类似于给数据库编写可执行函数. 简介 存储过程是一组为了完成特定功能的SQL语句集合,是经过编译后存储在数据库中. 存储过程 ...
- mysql存储过程详解
mysql存储过程详解 1. 存储过程简介 我们常用的操作数据库语言SQL语句在执行的时候需要要先编译,然后执行,而存储过程(Stored Procedure)是一组为了完成特定功能的S ...
- PHP调用MYSQL存储过程实例
PHP调用MYSQL存储过程实例 标签: mysql存储phpsqlquerycmd 2010-09-26 11:10 11552人阅读 评论(3) 收藏 举报 实例一:无参的存储过程$conn = ...
- mysql存储过程语法及实例
存储过程如同一门程序设计语言,同样包含了数据类型.流程控制.输入和输出和它自己的函数库. --------------------基本语法-------------------- 一.创建存储过程cr ...
随机推荐
- BZOJ4711 小奇挖矿
Description [题目背景] 小奇在喵星系使用了无限非概率驱动的采矿机,以至于在所有星球上都采出了一些矿石,现在它准备建一些矿石仓 库并把矿石运到各个仓库里. [问题描述] 喵星系有n个星球, ...
- 计蒜客NOIP模拟赛(2) D2T1 劫富济贫
[问题描述] 吕弗·普自小从英国长大,受到骑士精神的影响,吕弗·普的梦想便是成为一位劫富济贫的骑士. 吕弗·普拿到了一份全国富豪的名单(不在名单上的都是穷人),上面写着所有富豪的名字以及他们的总资产, ...
- 多项式的基本运算(FFT和NTT)总结
设参与运算的多项式最高次数是n,那么多项式的加法,减法显然可以在O(n)时间内计算. 所以我们关心的是两个多项式的乘积.朴素的方法需要O(n^2)时间,并不够优秀. 考虑优化. 多项式乘积 方案一:分 ...
- 51nod 1204 Parity(并查集应用)
1204 Parity 题目来源: Ural 基准时间限制:1 秒 空间限制:131072 KB 分值: 80 难度:5级算法题 你的朋友写下一串包含1和0的串让你猜,你可以从中选择一个连续的子串 ...
- [Codeforces Round #431]简要题解
来自FallDream的博客,未经允许, 请勿转载,谢谢. 好久没写cf题解了zzz 代码比较丑不贴了,cf上都可以看 Div2A. 给你一个长度为n(n<=100)的序列 判断是否可以分成奇数 ...
- bzoj4518[Sdoi2016]征途 斜率优化dp
4518: [Sdoi2016]征途 Time Limit: 10 Sec Memory Limit: 256 MBSubmit: 1657 Solved: 915[Submit][Status] ...
- bzoj4361isn 容斥+bit优化dp
4361: isn Time Limit: 10 Sec Memory Limit: 256 MBSubmit: 375 Solved: 186[Submit][Status][Discuss] ...
- SpringBoot跨域问题解决方案
一.允许全部请求跨域许可的代码: 需要继承WebMvcConfigurerAdapter类 @Configuration public class MyWebAppConfigurer extends ...
- C指针 指针和数组 二维数组的指针 指针应用
直接到变量名标识的存储单元中读取变量的值--直接寻址 通过其他变量间接找到变量的地址读取变量的值--间接寻址 指针变量存放地址 显示变量的地址 指针变量使用前必须初始化,若不知指向哪,可先指向NULL ...
- Android ImgView属性
ImageView是用于界面上显示图片的控件. 属性 1.为ImageView设置图片 ①android:src="@drawable/img1": src设置图片,默认图片等比例 ...