以前没用过MySQL存储过程,第一次写有很多的不习惯,总结如下:

下面是一个最简单的MySQL存储过程,实现两个数相加

delimiter $$
create procedure proc_add(in a int,in b int)
begindeclare c int;if a is null thenset a = 0;end if;if b is null thenset b = 0;end if;    set c = a + b;select c;
end$$
delimiter ;

需要特别注意的是

1. declare语句只能放在存储过程的开始位置,放在后面就会报错 
2. if 语句的后面必须有then,但是不需要begin,在if结束时需要end if 
3. 判断是否为NULL倒是和MSSQL一样都有IS NULL 
4. delimiter是定界符的意思在结束的end后面要添加定界符 
5. end if之后必须跟分号,否则语法错误

下面是一个较常见的场景,判断表中某列是否存在某值,如果存在执行某操作 

delimiter $$
create procedure proc_add_book(in $bookName varchar(200),in $price float)
begindeclare $existsFlag int default 0;select bookId into $existsFlag from book where bookName = $bookName limit 1;if bookId > 0 then#if not exists (select * from book where bookNumber = $bookName) theninsert into book(bookNumber,price) values($bookName,$price);end if;
end$$
delimiter ;

需要注意的是不能用if exists;exists可以在where后面或者在create object是使用,但是在if语句中不可以使用,只能用变通的方法。

while语句也需要注意,下面是一个while的简单应用:

delimiter $$
create procedure proc_add_books_looply(in $bookName varchar(200),in $price float,in $insertTimes INT)
beginwhile $insertTimes>0 doinsert into book (bookName,price) values($bookName,$price);end while;
end$$
delimiter ;

可以看到while后面跟条件,条件后面要跟一个do,在while循环体结束之后需要end while并以分号结束。

以上是一些简单的总结,希望有用。

MySQL存储过程问题相关推荐

  1. 常用MySQL函数存储过程_解析MySQL存储过程、常用函数代码

    mysql存储过程的概念: 存储在数据库当中可以执行特定工作(查询和更新)的一组SQL代码的程序段. mysql函数的概念: 函数是完成特定功能的SQL语句,函数分为内置函数和自定义函数(user-d ...

  2. MySQL 存储过程传参之in, out, inout 参数用法

    存储过程传参:存储过程的括号里,可以声明参数. 语法是 create procedure p([in/out/inout] 参数名  参数类型 ..) in :给参数传入值,定义的参数就得到了值 ou ...

  3. mysql中leave和_MySQL数据库之Mysql存储过程使用LEAVE实现MSSQL存储过程中return语法

    本文主要向大家介绍了MySQL数据库之Mysql存储过程使用LEAVE实现MSSQL存储过程中return语法 ,通过具体的内容向大家展现,希望对大家学习MySQL数据库有所帮助. DELIMITER ...

  4. MySQL存储过程详解

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

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

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

  6. mycat mysql 存储过程_MyCat 学习笔记 第十三篇.数据分片 之 通过HINT执行存储过程...

    1 环境说明 VM 模拟3台MYSQL 5.6 服务器 VM1 192.168.31.187:3307 VM2 192.168.31.212:3307 VM3 192.168.31.150:  330 ...

  7. mysql 存储过程 格式化_转 mysql 存储过程初探

    https://www.cnblogs.com/qmfsun/p/4838032.html MySQL命令执行sql文件的两种方法 https://www.cnblogs.com/mark-chan/ ...

  8. hibernate mysql 存储过程_hibernate调用mysql存储过程

    hibernate调用mysql存储过程 在最近的项目中,碰到一小段数据库数据分析的程序,需要结合多张表联合查询或涉及到子查询,项目主要采用的java ee开发,使用了hibernate框架,由于这些 ...

  9. mybatis mysql 存储过程_Mysql 存储过程+Mybatis调用实现插入操作例子 | 学步园

    一. 简介:网上关于存储过程的使用有很多的例子,但大多实现的功能比较简单,由于本人对SQL语句还不是很熟悉,更别说存储过程了,所以在实现该例子的时候遇到了很多问题,现在拿给大家来分享. 二. 在本例子 ...

  10. MySQL 存储过程初研究

    最近在做一个移动设备多类型登录的统一用户系统.其中记录用户资料的部分,因为涉及到更换设备的相同用户.同一个用户多类型同时具备的情况,所以想分辨出尽量少的用户去合理记录,就需要多次查询.于是决定研究一下 ...

最新文章

  1. 使用lua实现一个简单的事件派发器
  2. RichTextBox粘贴两次以及去掉粘贴内容的格式问题
  3. Silverlight 5 Beta 新特性预览
  4. sublime编写python路径报错怎么改_sublime开发Python的编码问题
  5. 移动端cube界面设计html,滴滴 Web 移动端组件库 cube-ui 开源
  6. python中的tkinter模块
  7. 平板电脑可以插u盘吗_有手机还需要平板电脑吗 酷比魔方iplay30平板电脑评测
  8. set、vector与list的构造与排序的耗时测试
  9. qlineedit只能输入数字_Qt编写自定义控件51-可输入仪表盘
  10. [软件]Beyond Compare
  11. gdb调试mpi程序
  12. Openpyxl:读取/写入Excel文件的Python模块
  13. 如何把HTML背景图片变透明,photoshop怎样把图片背景变透明
  14. java builder_带继承的Java Builder模式
  15. label怎么换行 vb_C#与VB.NET换行符的对比及某些string在label能正常换行,在textbox不能换行的问题...
  16. 给定经纬度计算距离_根据两点经纬度计算距离
  17. vue表格根据属性值设置背景颜色、vue表格设置鼠标悬浮背景颜色、vue表格的隔行变色修改背景颜色
  18. IP Forwarding打开
  19. 基因功能分析——哈佛大学
  20. VR全景航拍补天教程

热门文章

  1. JSON中,java.lang.NoClassDefFoundError: net/sf/ezmorph/Morpher问题解决
  2. SQLite使用手记
  3. 状态很差时,就不要再继续做了。因为是徒劳,再就是过段时间或第二天再看,会豁然开朗,原来存在的疑难问题都迎刃而解。平时没事的时候要不断地给自己充电,让自己了解多方面知识。...
  4. Unity(四)IocContainer 封装类库
  5. WIN7 中配置局域网
  6. Tomcat 配置 Context
  7. 《大规模Web服务开发技术》
  8. Android进阶知识:绘制流程(上)
  9. Guava Cache探索及spring项目整合GuavaCache实例
  10. thinkPHP5.0表单令牌使用