存储过程(Stored Procedure):是一组用于完成特定数据库功能的sql语句集,该sql语句集经过编译后存储在数据库系统中,在使用的时候,用户通过调用指定已经定义好的存储过程并执行它,从而完成一系列的数据库操作;

1.声明创建一个存储过程

# 定义基本存储过程
DROP PROCEDURE IF EXISTS test; #如果存在指定存储过程则删除它
DELIMITER // # 定义存储过程结束符,
CREATE PROCEDURE test() # 创建存储过程
BEGIN # 存储过程要执行的操作
SELECT 'Hello World!'
END// CALL test(); # 调用存储过程

2.声明变量

#存储过程变量的声明和使用
DROP PROCEDURE IF EXISTS test; #如果存在指定存储过程则删除它
DELIMITER // # 定义存储过程结束符,
CREATE PROCEDURE test()
BEGIN
DECLARE aa VARCHAR(20); # 定义变量
DECLARE bb INT DEFAULT 0; # 定义int 类型变量 默认为0;
SET aa = '张三'; # 变量赋值
SELECT aa; # 输出变量
SELECT bb; # 输出变量
END//
CALL test(); # 调用存储过程

3.流程控制语句的声明使用

#存储过程流程控制语句使用
DROP PROCEDURE IF EXISTS test_2;
DELIMITER //
CREATE PROCEDURE test_2()
BEGIN
DECLARE aa INT; # 定义变量
DECLARE bb INT; # 定义变量
SET aa = 20; # 变量赋值
SET bb = 20; # 变量赋值
IF aa > bb THEN # 判断
SELECT aa;
ELSEIF aa < bb THEN # else if 可以有多个
SELECT bb;
ELSE # else 只能存在一个
SELECT aa+bb;
END IF; # 结束if 语句
END//
CALL test_2(); # 调用存储过程

4.loop 循环语句的使用

#loop 循环语句的使用
# 输出1-100之间所有数字之和
DROP PROCEDURE IF EXISTS test_3;
DELIMITER //
CREATE PROCEDURE test_3()
BEGIN
DECLARE aa INT DEFAULT 0; # 定义变量 默认值为0
DECLARE sums INT DEFAULT 0; # 定义变量 默认值为0
loopName:LOOP # 循环开始:loopName 定义循环名
SET aa = aa + 1; # 设置变量自增
SET sums = sums + aa;
IF aa >= 100 THEN # loop 需要设置跳出条件,不然会变成死循环
LEAVE loopName; # 结束循环
END IF; # 结束if 语句
END LOOP; # 结束loop 循环语句
SELECT sums; # 输出结果
END//
CALL test_3(); # 调用存储过程

最新文章

  1. 使用SecureCRT连接虚拟机(ubuntu)配置记录
  2. 浅谈Tuple之C#4.0新特性那些事儿你还记得多少?
  3. Redis -- 02 配置文件解析
  4. 大话设计模式C++版——工厂方法模式
  5. Android实例] android获取web服务器端session并验证登陆
  6. why dicePlayer cannot player with defy mb526
  7. 2.5.4 使用popupWindow
  8. 第六篇:R语言数据可视化之数据分布图(直方图、密度曲线、箱线图、等高线、2D密度图)
  9. COJ 0138 NOIP201108计算系数
  10. ZooKeeper原理及配置
  11. yii组态 redis主从配置(随着代码)
  12. Hibernate:如何映射聚合?
  13. Kotlin入门第四课:简单工厂模式
  14. 最短路径HDU3790(Dijkstra)
  15. selenium之 玩转鼠标键盘操作(ActionChains)
  16. ubuntu设置分辨率
  17. jvm字节占用空间分析
  18. 「PKUWC2019」拓扑序计数(状压dp)
  19. Spring整合MyBatis(五)MapperScannerConfigurer
  20. Flask SQLAlchemy &amp; model

热门文章

  1. Spring Boot项目如何同时支持HTTP和HTTPS协议
  2. 基于Opentracing+Jaeger全链路灰度调用链
  3. 如何使用代理IP进行数据抓取,PHP爬虫抓取亚马逊商品数据
  4. 基于 HTML5 + Canvas 实现楼宇自控系统
  5. 斯坦福机器学习课程 Exercise 习题二
  6. 基于appium实现的线性代码引用unittest单元测试框架
  7. 数组转换成List集合
  8. 2017.12.21 学习vue的新得
  9. weex不支持类的动态追加
  10. 前端技术之:JSON.stringfy详细说明