mysql数据库存储过程 Mysql—存储过程

文章浏览阅读2.2k次。存储过程就是类似于MySQL触发器,经过事先编写好相应语句,通过编译后存储在数据库上。触发器不需要手动调用即可实现相应SQL功能。MySQL存储过程

简介

存储过程就是类似于MySQL触发器,经过事先编写好相应语句,通过编译后存储在数据库上。触发器不需要手动调用即可实现相应SQL功能。MySQL存储过程,需要自己去调用得到相应的结果。

语法

CREATE DEFINER = CURRENT_USER PROCEDURE demo()BEGIN...编写具体sql语句END

demo()中,可以添加输入IN、输出OUT,如:

CREATE DEFINER = CURRENT_USER PROCEDURE demo(IN name VARCHAR(20), OUT age int)BEGIN...编写具体sql语句END

这里以Navicat作为演示

在这里插入图片描述

DEFINER = CURRENT_USER 是表示在当前用户创建的存储过程,如果登录名是root,那么这里就是DEFINER=root@%。编写完,保存后就会显示

在这里插入图片描述

CALL 存储过程名称(存储过程需要参数就传入参数)

在Navicat中可以直接点击运行,可以得到相应结果

在这里插入图片描述

如果是有参数的存储过程,会弹出相应的参数让填写。

在命令行中:

在这里插入图片描述

简单的案例

查询所有用户的薪资

在这里插入图片描述

运行结果:

在这里插入图片描述

根据用户名称,查询该用户的薪资

创建存储过程

在这里插入图片描述

在这里插入图片描述

这里需要注意的是:填写完相关参数后,点击完成后,直接保存该存储过程,是无法编译通过的

在这里插入图片描述

这里需要对varchar指定位数

在这里插入图片描述

点击运行,输入参数值

在这里插入图片描述

在这里插入图片描述

这里可以看到结果1为想要查询的结果。这时点开结果2看看,可以发现这个带有@的值就是我们定义的OUT 对应的值,但是为什么为空呢?

在这里插入图片描述

查看我们创建的这个存储过程,可以看到IN 参数有值,但是OUT 参数usalary 还没有值,也就是变量@usalary 目前还是为空的(猜测在Navicat中直接点击运行时,会在输入IN时,也默认给OUT 传入的是null,如果不传,@usalary就是null),既然我们想要输出usalary 含有值,那么就在存储过程sql语句中,将查询的salary 结果赋值给它。

给变量赋值,可以使用into 进行

在这里插入图片描述

再次运行

在这里插入图片描述

在这里插入图片描述

可以看到变量@usalary 已经成功赋值成功。

那么我们进行变量的赋值,有什么用呢?

用户的自定义变量,在mysql中的保存时间为该次mysql的会话连接,在这个会话内,可以一直调用该变量,不需要再去执行存储过程。

在这里插入图片描述

在这里插入图片描述

MySQL的存储过程就先讲到这,后面有需要再更新上来。

可以看看我的个人博客:

网站: /

—————————————————————————

作为初学者,很多知识都没有掌握,见谅,如有错误请指出,以期进步,感谢!。后续有新的学习,继续补充上来。

原创文章,作者:筱凯,如若转载,请注明出处:https://www.jingyueyun.com/ask/718.html

(0)
筱凯筱凯
上一篇 2024 年 7 月 14 日
下一篇 2024 年 7 月 14 日

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

云产品限时秒杀。精选云产品高防服务器,500M大带宽限量抢购  >>点击进入