存储过程就是一条或多条sql语句的集合

创建存储过程

使用 create procedure 创建存储过程,参数类型有三种 in,out,inout

IN 表示调用存储过程给的参数值
OUT 表示输出的值调用时可以接受
INOUT 即可做输出,也可做输入

BEGIN和END之间定义存储过程体
下面这个存储过程就是查询所有fruits 的数据

使用 delimiter来定义结束符,表示一个存储过程的结束 一般使用 $$ 或者 //

 DELIMITER //CREATE PROCEDURE Proc()BEGINSELECT * FROM fruits;END //# 这个存储过程的作用是 把查询到的fruits数量给到 param1,这个out是传出来的值,我们可以在外面接受
CREATE PROCEDURE CountProc (OUT param1 INT)
BEGIN
SELECT COUNT(*) INTO param1 FROM fruits;
END;

创建存储函数

存储函数需要生命函数的返回值类型
使用 create function 创建函数,参数类型和存储过程类似,IN,OUT,INOUT

 DELIMITER //CREATE FUNCTION NameByZip()RETURNS CHAR(50)BEGINRETURN   (SELECT s_name FROM suppliers WHERE s_call= '48075');END  //

变量的使用****

变量使用参考链接

用户变量

用户变量使用"@"开头
有以下三种方式设置用户变量:

  • set语句,此时可以使用"=“或者”:="操作符;
  • select语句,此时只能使用":=“格式赋值,因为除了set语句中,”="都会被视为比较操作符。;
  • select … into var_name from TABLE语句,此时要求select语句只能返回标量值,即单行数据。

系统变量

全局系统变量使用global或者"@@global.“关键字来设置。会话系统变量使用session或者”@@session."关键字来设置,其中session可以替换为Local,它们是同义词。

-- 设置全局系统变量
set global sort_buffer_size=32M;
set @@global.sort_buffer_size=32M;
-- 设置会话系统变量
set session sort_buffer_size=32M;
set @@session.sort_buffer_size=32M;
set sort_buffer_size=32M;
-- 查看全局系统变量值
select @@global.sort_buffer_size;
show global variables like "sort_buffer%";
-- 查看会话系统变量,不能使用select sort_buffer_size
select @@session.sort_buffer_size;
select @@sort_buffer_size;
show [session] variables like "sort_buffer%";

局部变量

只能在begin…and语句块中生效。它不像用户变量,本地变量必须使用declare事先声明,所以declare也必须在begin…end中使用。

# 声明变量
BEGIN
declar var_name data_type
set var_name = value;
END# 声明3个变量,分别为var1、var2和var3,数据类型为INT,使用SET为变量赋值,代码如下:
DECLARE var1, var2, var3 INT;
SET var1 = 10, var2 = 20;
SET var3 = var1 + var2;# MySQL中还可以通过SELECT ... INTO为一个或多个变量赋值,语法如下:
SELECT col_name[,...] INTO var_name[,...] table_expr;
游标的使用

个人在开发中几乎没怎么用过

# 声明光标
declare cursor_name  cursor for  select_statement# 声明名称为cursor_fruit的光标
DECLARE cursor_fruit CURSOR FOR SELECT f_name, f_price FROM fruits ;
上面的示例中,光标的名称为cur_fruit,SELECT语句部分从fruits表中查询出f_name和f_price字段的值。# 打开光标
open cursor_name# 使用光标
fetch cursor_name into var_name1,var_name2# 关闭光标
close cursor_name
IF 语句

示例


IF val IS NULLTHEN SELECT 'val is NULL';ELSE SELECT 'val is not NULL';
END IF;
CASE 语句
case val
when val1
then xxxx
when val2
then xxxx2
else xxxxx3
end case# 使用CASE流程控制语句的第2种格式,判断val是否为空、小于0、大于0或者等于0,
CASEWHEN val IS NULL THEN SELECT 'val is NULL';WHEN val < 0 THEN SELECT 'val is less than 0';WHEN val > 0 THEN SELECT 'val is greater than 0';ELSE SELECT 'val is 0';
END CASE;

调用存储过程

  1. 使用 call
    call procedure_name
 DELIMITER //CREATE PROCEDURE CountProc1 (IN sid INT, OUT num INT)BEGINSELECT COUNT(*) INTO num FROM fruits WHERE s_id = sid;END //# 调用存储过程
CALL CountProc1(101,@num)
# 传出来的变量
select @num

调用存储函数

定义存储函数CountProc2,然后调用这个函数,代码如下:

# 定义了一个存储函数,返回一个int类型的数据,数据是查询所有的水果,s_id=(sid,int)DELIMITER //CREATE FUNCTION  CountProc2 (sid INT)RETURNS INTBEGINRETURN (SELECT COUNT(*) FROM fruits WHERE s_id = sid);END //DELIMITER ;# 调用select CountProce2(102)

查看存储过程和函数

使用 show procedure status like ‘存储过程名,函数’
使用 show create procedure ‘存储过程名,函数’ ----- 查看当初是怎么定义的

MySQL中的存储过程,函数的信息在 information_schema.Routines 表中

# 先看下表中有哪些字段
select * from information_schema.Routines;


如果我们还需要查询满足我们需求的内容,我们只需要对这个information_schema.Routines 中过滤就行 ,where 等

删除存储过程,函数

语法格式

drop procedure procedure_name
drop function function_name

MySQL 存储过程和函数相关推荐

  1. WebDay18 MySQL存储过程 存储函数 触发器 事务

    MySQL存储过程 存储函数 触发器 事务 一.MySQL存储过程和函数 1.存储过程和函数的概念 2.存储过程和函数的好处 3.存储过程和函数的区别 4.创建存储过程 5.调用存储过程 6.查看存储 ...

  2. mysql存储过程与函数、触发器、游标、变量等知识点详解

    引言:该文章仅供自己学习整理 mysql执行顺序 语法顺序 写sql的关键字顺序 select [distinct] from join(如left join) on where group by h ...

  3. Mysql学习总结(11)——MySql存储过程与函数

    2019独角兽企业重金招聘Python工程师标准>>> 摘要:存储过程和函数是在数据库中定义一些SQL语句的集合,然后直接调用这些存储过程和函数来执行已经定义好的SQL语句.存储过程 ...

  4. mysql 存储过程与函数_12 MySQL存储过程与函数

    存储过程和函数 存储过程和函数是事先经过编译并存储在数据库中的一段SQL语句的集合. 调用存储过程和函数可以简化应用开发人员的工作,减少数据在数据库和应用服务器之间的传输,提高数据处理的效率. 存储过 ...

  5. mysql存储过程或函数中传入参数与表字段名相同引发的悲剧

    真实案例.如下的一个存储过程: create procedure Apple(in user_id int) begin delete from users where user_id = user_ ...

  6. MySQL存储过程和函数示例

    存储过程和函数是在数据库中定义的一些SQL语句的集合,然后直接调用这些存储过程和函数来执行定义好的SQL语句.存储过程和函数可以避免开发人员重复的编写相同的SQL语句,而且存储过程和函数是在MySQL ...

  7. 争议?MySQL存储过程与函数,封装,体,完整详细可收藏

    文章目录 1. 存储过程概述 2. 创建存储过程 3. 调用存储过程 4. 存储函数的使用 5. 存储过程和函数的查看.修改.删除 6. 关于存储过程使用的争议 MySQL从5.0版本开始支持存储过程 ...

  8. MySql存储过程与函数

    林炳文Evankaka原创作品.转载请注明出处http://blog.csdn.net/evankaka 摘要:存储过程和函数是在数据库中定义一些SQL语句的集合,然后直接调用这些存储过程和函数来执行 ...

  9. [mysql]存储过程/存储函数

    [Stored Procedure /Stored Function] 存储过程 定义 语法分析: 调试 效果比较 存储函数 应用 语法分析: 两者对比 存储过程和函数的查看.修改.删除 查看 修改 ...

  10. 【MySQL学习】4、MySQL存储过程和函数

    文章目录 1.存储过程和函数概念 2.存储过程的使用 (1)创建存储过程 (2)调用存储过程 (3)查看存储过程 (4)删除存储过程 3.存储过程的语法 (1)声明变量 (2)if条件判断 (3)传递 ...

最新文章

  1. 不要纠结于过去发生的事
  2. 使用云祺虚拟机备份软件恢复Citrix XenServer 虚拟机
  3. 北斗导航 | 利用模拟卫星星座估计GNSS接收机位置
  4. 3台机器配置hadoop集群_Hadoop学习之路(三)Hadoop集群搭建和简单应用
  5. java 模板引擎_SpringBoot入门系列(四)如何整合Thymeleaf模板引擎
  6. 基于struts2的文件上传下载
  7. echarts 图表配置tooltip 的formatter
  8. 开源HTML5应用开发框架 - iio Engine
  9. 刘挺 | 从知识图谱到事理图谱
  10. HTML的文本格式化
  11. caffe boost cuda __float128 undefined
  12. 基于QT播放器的实现(一)Rgb、YUV格式(附带代码)
  13. IIC总线设计⑥——时钟模块DS1302
  14. 计算机局域网硬件维护与网络安全的分析
  15. js小学生图区_多种方式实现js图片预览
  16. Learning Deep Similarity Models with Focus Ranking for Fabric Image Retrieval 学习笔记
  17. 7-21 输出大写英文字母 (15分)
  18. GPS接收机学习小记(一)
  19. 并查集+字符排序-困兽之斗(乐视题)
  20. 程序人生 -【2017年读书报告+书籍推荐】

热门文章

  1. JavaScript 实现简易 ATM 取款机操作
  2. Swift 第三方 播放器AliyunPlayer,音乐(阿里云播放器)(源码)
  3. 学员_国培阶段性学习总结
  4. 微信移动端(wap)开发调试工具
  5. Ubuntu20.04下安装QQ
  6. 移动端利用OpenGL展示3D模型文件STL
  7. 智慧树古建筑文化与鉴赏
  8. qq服务器断掉修改昵称,qq昵称修改 更新资料失败
  9. 在线音乐播放服务器(一)
  10. DEV——ComboBoxEdit(barEditItem)