下面小编就为大家带来一篇浅谈MySQL存储过程中declare和set定义变量的区别。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧

在存储过程中常看到declare定义的变量和@set定义的变量。简单的来说,declare定义的类似是局部变量,@set定义的类似全局变量。

1、declare定义的变量类似java类中的局部变量,仅在类中生效。即只在存储过程中的begin和end之间生效。

2、@set定义的变量,叫做会话变量,也叫用户定义变量,在整个会话中都起作用(比如某个应用的一个连接过程中),即这个变量可以在被调用的存储过程或者代码之间共享数据。如何理解呢?可以看下面这个简单例子,很好理解。 

(1)先执行下面脚本,创建一个存储过程,分别有declare形式的变量和@set形式的变量

DROP PROCEDURE IF EXISTS temp;
DELIMITER //
CREATE PROCEDURE temp()
BEGIN
  DECLARE a INT DEFAULT 1;

  SET a=a+1;
  SET @[email protected]+1;
  SELECT a,@b;

END
//
DELIMITER ;

(2)接着为b变量初始化。

SET @b=1;

(3)然后重复调用这个存储过程。

CALL temp();

(4)会发现a的值不改变,而b的值会一直增加。

所以,总结起来就是开头那句话,declare定义的类似是局部变量,@set定义的类似全局变量。

以上这篇浅谈MySQL存储过程中declare和set定义变量的区别就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持爱安网。

最新资讯
兰亭集势第三季度净亏损1780万美元 同比扩大

兰亭集势第三季度净亏

兰亭集势(纽交所:LITB)今日发布了截至9月30日的2018财
腾讯音乐盘中跌约4% 跌破发行价13美元

腾讯音乐盘中跌约4%

美股开盘,腾讯音乐(NYSE:TME)短线跌破发行价13美元,截止北
丰田宣布将在巴西生产世界首辆乙醇混动车

丰田宣布将在巴西生产

日(J)本(P)最大汽车制造商丰田公司13日在巴西宣布,该公司将在
知乎回应“裁员”:700人为极端夸大的不实事实

知乎回应“裁员”:700

进入12月以来,知乎被“裁员”消息困扰。今日,知乎官方独
特斯拉员工爆料:马斯克火气大爱炒鱿鱼 员工不敢接近

特斯拉员工爆料:马斯

美国《连线》杂志(Wired)今日发表文章称,特斯拉CEO埃隆
蔚来汽车李斌:山村里的大学生,创新大潮中的创业者

蔚来汽车李斌:山村里的

从山村里走出来的大学生,到创业创新大潮中的活跃面孔乃
最新文章
Linux中 MySQL 授权远程连接的方法步骤

Linux中 MySQL 授权远

如果需要远程连接 Linux 系统上的 MySQL 时,必须为其 I
8种手动和自动备份MySQL数据库的方法

8种手动和自动备份MyS

作为流行的开源数据库管理系统,MySQL的使用者众多,为了
定时备份 Mysql并上传到七牛的方法

定时备份 Mysql并上传

常见的 MySQL 数据备份方式有,直接打包复制对应的数据
MySQL服务器 IO 100%的分析与优化方案

MySQL服务器 IO 100%

这篇文章主要给大家介绍了关于MySQL服务器 IO 100%的
使用JDBC连接Mysql数据库会出现的问题总结

使用JDBC连接Mysql数

这篇文章主要给大家介绍了关于使用JDBC连接Mysql数据
MySQL中的排序函数field()实例详解

MySQL中的排序函数fie

这篇文章主要给大家介绍了关于MySQL中排序函数field()