MySQL 存储过程的变量
MySQL 存储过程的变量
变量是一个命名数据对象,变量的值可以在存储过程执行期间更改。我们通常使用存储过程中的变量来保存直接/间接结果。 这些变量是存储过程的本地变量。
注意:变量必须先声明后,才能使用它。
声明变量
要在存储过程中声明一个变量,可以使用DECLARE语句,如下所示:
DECLARE variable_name datatype(size) DEFAULT default_value;
下面来更详细地解释上面的语句:
- 首先,在
DECLARE关键字后面要指定变量名。变量名必须遵循MySQL表列名称的命名规则。 - 其次,指定变量的数据类型及其大小。变量可以有任何MySQL数据类型,如
INT,VARCHAR,DATETIME等。 - 第三,当声明一个变量时,它的初始值为
NULL。但是可以使用DEFAULT关键字为变量分配默认值。
例如,可以声明一个名为total_sale的变量,数据类型为INT,默认值为0,如下所示:
DECLARE total_sale INT DEFAULT 0;
MySQL允许您使用单个DECLARE语句声明共享相同数据类型的两个或多个变量,如下所示:
DECLARE x, y INT DEFAULT 0;
我们声明了两个整数变量x和y,并将其默认值设置为0。
分配变量值
当声明了一个变量后,就可以开始使用它了。要为变量分配一个值,可以使用SET语句,例如:
DECLARE total_count INT DEFAULT 0;
SET total_count = 10;
上面语句中,分配total_count变量的值为10。
除了SET语句之外,还可以使用SELECT INTO语句将查询的结果分配给一个变量。 请参阅以下示例:
DECLARE total_products INT DEFAULT 0 SELECT COUNT(*) INTO total_products
FROM products
在上面的例子中:
- 首先,声明一个名为
total_products的变量,并将其值初始化为0。 - 然后,使用
SELECT INTO语句来分配值给total_products变量,从示例数据库(yiibaidb)中的products表中选择的产品数量。
实例
数据表 userinfo

BEGIN
DECLARE user_name VARCHAR(50) DEFAULT '';
DECLARE user_age INT DEFAULT 0;
DECLARE user_phone VARCHAR(11) DEFAULT '';
SELECT username,age,phone INTO user_name,user_age,user_phone FROM userinfo where ids = ids;
SELECT user_name,user_age,user_phone;
END

执行调用存储过程,结果如下。

注意:数据库表字段等命名是注意区别关键字,不然使用时会报错,如key、name等。
如下

变量范围(作用域)
一个变量有自己的范围(作用域),它用来定义它的生命周期。 如果在存储过程中声明一个变量,那么当达到存储过程的END语句时,它将超出范围,因此在其它代码块中无法访问。
如果您在BEGIN END块内声明一个变量,那么如果达到END,它将超出范围。 可以在不同的作用域中声明具有相同名称的两个或多个变量,因为变量仅在自己的作用域中有效。 但是,在不同范围内声明具有相同名称的变量不是很好的编程习惯。
以@符号开头的变量是会话变量。直到会话结束前它可用和可访问。
MySQL 存储过程的变量的更多相关文章
- Mysql存储过程给变量赋值的几种方法实践
BEGIN DECLARE v_request_count INT; #申请次数 DECLARE v_plan_count INT; #安排次数 DECLARE v_learn_count INT; ...
- Mysql 存储过程(变量、定义条件、处理程序、光标、流程控制构造)
最近由于有同事编写了存储函数,需要进行验证,但是对存储过程一直不是很了解,所以抽时间了解了一下存储过程的基本语法.本篇文章主要包括介绍了存储过程的5个小语法:declare语句的变量.定义条件.处理程 ...
- mysql存储过程@命名变量的区别
存储过程中@是用来标识每一次运行存储过程都会保存的值.而直接命名是每一次都会初始化的局部变量.@@是用来标识全局变量. CREATE PROCEDURE prc_test ()BEGIN DECLAR ...
- Mysql存储过程查询结果赋值到变量的方法
Mysql存储过程查询结果赋值到变量的方法 把查询结果赋值到变量,大部分情况下使用游标来完成,但是如果明确知道查询结果只有一行(例如统计记录的数量,某个字段求和等),其实可以使用set或into的 ...
- MySQL存储过程中使用SELECT …INTO语句为变量赋值
使用SELECT …INTO语句为变量赋值 在MySQL存储过程中,可以使用SELECT …INTO语句对变量进行赋值,该语句在数据库中进行查询,并将得到的结果赋值给变量.SELECT …INTO语句 ...
- (2.11)Mysql之SQL基础——存储过程与变量
(2.11)Mysql之SQL基础——存储过程 关键字:mysql存储过程 查看存储过程: []SELECT * FROM information_schema.ROUTINES WHERE ROUT ...
- mysql -- 存储过程中 declare 和 set 定义变量的区别
mysql存储过程中,定义变量有两种方式:1.使用set或select直接赋值,变量名以 @ 开头.例如:set @var=1;可以在一个会话的任何地方声明,作用域是整个会话,称为会话变量. 2.以 ...
- MySQL存储过程(转)
一.MySQL 创建存储过程 "pr_add" 是个简单的 MySQL 存储过程,这个存储过程有两个 int 类型的输入参数 "a"."b" ...
- MySql存储过程
MySQL 存储过程 ```sql CREATE PROCEDURE myprocedure (IN para01 INTEGER) BEGIN DECLARE var01 CHAR(10); IF ...
随机推荐
- python练习--利用while循环和if语句,完成猜骰子的数字大小
#exampleimport random# 骰子投掷的随机叔numnum = random.randint(1,6)# 输入一个猜测的数字temp = input("请输入一个整数:&qu ...
- 安装jar包到本地仓库和远程仓库
转载: https://blog.csdn.net/zengdongwen/article/details/81241198 如何部署到maven中央仓库呢? https://blog.csdn.ne ...
- ls file less
ls-a 列出所有文件,包含隐藏文件-l 以长格式显示结果-F 在所列出的文件后面显示其格式-r 按照文件名降序展示-t 按照时间列出-S 按照文件大小排序 file 文件名:展示文件的类型简单描述 ...
- RTSP-RTMP-HLS媒体播放管理
近在跟一些做安防行业同学交流中发现,他们对于外网中播放各类视频流觉得各种设置麻烦的很, 好吧,小小的做了一个解决方案. 这个工具从视频监控管理平台剥离出来, 支持对rtsp, rtmp, hls流的管 ...
- MQ知识点汇总
1. MQ是什么 2. MQ能做什么 3. 消息模式 4. 使用MQ的时候需要注意什么 5. 常用MQ 6. MQ的不足 7. 什么时候不适用MQ 8. MQ的组成 9. MQ的关注点 1. MQ是什 ...
- CentOS 7Google浏览器
CentOS 7安装并启动Google浏览器(★firecat亲测有效★) 2018年09月23日 12:42:47 libaineu2004 阅读数:3088 版权声明:本文为博主原创文章,未 ...
- Python-----多线程threading用法
threading模块是Python里面常用的线程模块,多线程处理任务对于提升效率非常重要,先说一下线程和进程的各种区别,如图 概括起来就是 IO密集型(不用CPU) 多线程计算密集型(用CPU) 多 ...
- Android界面跳转几种情况
Android界面简单跳转, Intent intent =new Intent(MainActivity.this,SecondActivity.class); startActivity(inte ...
- mysql恢复备份数据时,部分表数据丢失的问题
原因:是由于默认的通信缓冲区的最大长度为50M(max_allowed_packed). 处理办法: //查看当前max_allowed_packet的大小 show global variables ...
- Node.js基础学习二之POST请求
本篇介绍下 Node.js post 请求 需求: 用户登录,前端界面输入用户名和密码,点击登录请求后台验证,根据后台反馈的信息做出响应 前端: (1)使用form表单 (2)使用ajax异步请求 服 ...