MySql中存储过程的理解
到底什么是存储过程,又为什么需要使用存储过程?
存储过程简单来说,就是为以后的使用而保存的一条或多条MySQL语句的集合,可将其视为批文件,虽然它们的作用不仅限与批处理。
使用存储过程有3个主要的好处,即简单,安全,高性能,其实和调用函数差不多,只提供了输入和输出,内部的实现完全封装了起来。

创建一个没有输入参数,也没有输出参数的存储过程,过程本身仅是一个简单的sql语句,
这里之所以没有在命令行交互程序里创建,是因为交互程序默认视;为一条sql语句的结束符,这样的话,存储过程的创建就会出错,
因此需要使用delimiter //来临时修改程序的语句分隔符,同时,创建完存储过程后,需要使用delimiter ;再修改回来,其中//也可以换成其它字符

带输出参数的存储过程

这里需要补充一下,关键字out指出相应的参数用来从存储过程中传出一个值,MySQL支持in(传递给存储过程),out(从存储过程传出)和inout(对存储过程传入和传出)类型的参数
存储过程的代码位于begin和end之间,select语句用来检索值,然后保存到相应的变量(通过指定into关键字)
所有mysql变量都必须以@k开始

注意,mysql处理语句的时候是忽略空格的,上面这样写,是为了sql语句的易读,同时,也建议这样写
既有输入参数也有输出参数的存储过程


一般来说,存储过程的编写比基本的SQL语句复杂,编写存储过程需要更高的技能,更丰富的经验。
还有相关智能存储的例子请参考《MySQL必知必会》一书。
上述例子参考《MySQL必知必会》一书。
MySql中存储过程的理解的更多相关文章
- SqlServer和MySQL中存储过程out返回值处理C#代码
1.SqlServer中out处理 C#代码 #region"SqlServer中存储过程处理out返回值" //public void getdata() //{ // stri ...
- MYSQL中存储过程的创建,调用及语法
MySQL 存储过程是从 MySQL 5.0 开始增加的新功能.存储过程的优点有一箩筐.不过最主要的还是执行效率和SQL 代码封装.特别是 SQL 代码封装功能,如果没有存储过程,在外部程序访问数据库 ...
- MySQL中存储过程+事件的使用方法
一.背景 将界面操作日志存储在MySQL数据库中的operationlog表中,如果该表不能自动备份,表中的数据会越来越多,影响速度.可以定期将表中数据备份到另外一个表中来解决. 二.解决方案 1.使 ...
- [转]MySQL中存储过程权限问题
MySQL中以用户执行存储过程的权限为EXECUTE 比如我们在名为configdb的数据库下创建了如下存储过程,存储过程的定义者为user_admin use configdb; drop proc ...
- Mysql中存储过程和函数的写法
MySQL中,创建存储过程的基本形式如下: CREATE PROCEDURE sp_name ([proc_parameter[,...]]) [characteristic ...] routine ...
- mysql中enum类型理解
ENUM是枚举类型,它虽然只能保存一个值,却能够处理多达65535个预定义的值.下面是我写的一个mysql语句 CREATE TABLE student( id INT(11) PRIMARY key ...
- MySql中存储过程中的@变量总是无法执行,提示Parameter '@XXX' must be defined
一.情形: 在.net调用Mysql时,比如如下的一句SQL,总是无法执行,可是在其它SQL客户端窗口中是能正确执行的. drop procedure if exists AddColumnUnles ...
- mysql中存储过程
存储过程procedure 存储过程,其本质还是函数——但其规定:不能有返回值: 定义形式: 说明: 1,in:用于设定该变量是用来“接收实参数据”的,即“传入”:默认不写,就是in 2,out:用于 ...
- MySQL中的锁理解
1.目的:解决客户端并发访问的冲突问题 2.锁的分类 1.锁类型 1.读锁(共享锁) 查询(select):加读锁之后,别人不能更改表记录,但是可以进行查询. 2.写锁(互斥锁,排他锁) 更新(upd ...
随机推荐
- TCP和UDP?
简单讲,TCP是打电话,UDP是发短信.
- $().bind()的返回值
var eleMenus = $("#choMenu a").bind("click", function (event){}); 此时eleMeuns的值是$ ...
- 常用的MySQL语句写法
常用的MySQL语句写法 MySQL的SQL语句写法,除了那些基本的之外,还有一些也算比较常用的,这里记录下来,以便以后查找. 好记性不如烂笔头,这话说的太有道理了,一段时间不写它,还真容易忘 ...
- 分享知识-快乐自己:关于 String 小案例
单个字符出现的次数: /*** * 验证是否符合拆分条件 * * @param text * 原字符串 * @param sub * 判断条件 * @return */ public static i ...
- Java---变量与常量
Java中的关键字 Java 语言中有一些具有特殊用途的词被称为关键字.关键字对 Java 的编译器有着特殊的意义,在程序中应用时一定要慎重 Java标识符 标识符就是用于给 Java 程序中变量.类 ...
- Android中高效的显示图片之三——缓存图片
加载一张图片到UI相对比较简单,如果一次要加载一组图片,就会变得麻烦很多.像ListView,GridView,ViewPager等控件,需要显示的图片和将要显示的图片数量可能会很大. 为了减少内存使 ...
- SQL Server 2008可以安装在win7 64位的系统上吗?
可以安装的.SQL 支持32和64位.安装时它自动选择的.下载时注意是完整安装包. SQLFULL_CHS 2008.iso大小:3.28G 已经过百度安全检测,放心下载
- SHOI2016 随机序列
给你一个数列,在相邻两个数之间插入加号,减号或乘号 每次支持单点修改,求所有这样可以得到的表达式之和,膜1e9 + 7 sol: 我是个 sb ... 可以发现,如果某位置出现了加号,后面一定有一个减 ...
- 每天一个linux命令(7):rmdir命令
版权声明更新:2017-05-11博主:LuckyAlan联系:liuwenvip163@163.com声明:吃水不忘挖井人,转载请注明出处! 1 文章介绍 本文介绍了Linux下面的rmdir命令. ...
- Link-cut-tree 学习记录 & hdu4010
网上的lct一抓一大把,所以我也不再写什么讲解了,只写一写自己的看法. Link-cut-tree 是用于维护动态树的一种数据结构 所谓动态树就是一片存在边的添加与删除的森林中的一棵树 所以我们要快速 ...