下面小编就为大家带来一篇浅谈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定义变量的区别就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持爱安网。

最新资讯
阅文吴文辉:网文出海从内容输出逐渐变为模式输出

阅文吴文辉:网文出海从

阅文集团联席CEO吴文辉提到,IP开发进入了下半场,从看人
腾讯邹正宇:中国泛二次元用户达3.5亿 将发力漫动画

腾讯邹正宇:中国泛二次

邹正宇表示,95后和00后对于中国传统文化的喜爱超出想象
映客发布自愿性股份回购公告:不超过1亿港元

映客发布自愿性股份回

今日映客公布2018年度业绩的同时,也发布了自愿性股份回
BAT十年财报对比:AT争王、百度掉队

BAT十年财报对比:AT争

过去十年,没有任何一家企业,能撼动BAT三分天下的格局。
华为砸百亿建的东莞欧洲小镇,打卡攻略在此(组图)

华为砸百亿建的东莞欧

想要欧洲一日游?来华为松山湖基地。风景梦幻、设施豪华
腾讯程武:腾讯影业将发力三方向 讲好中国故事

腾讯程武:腾讯影业将发

3月24日下午消息,2019腾讯新文创生态大会在国家会议中
最新文章
MySQL服务器的SSD性能问题分析和测试详解

MySQL服务器的SSD性能

这篇文章主要给大家介绍了关于MySQL服务器的SSD性能问
MYSQL自定义函数判断是否正整数的实例代码

MYSQL自定义函数判断

这篇文章主要介绍了MYSQL自定义函数判断是否正整数 的
navicat连接mysql出现2059错误的解决方法

navicat连接mysql出现

这篇文章主要为大家详细介绍了navicat连接mysql出现20
mysql基础架构教程之查询语句执行的流程详解

mysql基础架构教程之

这篇文章主要给大家介绍了关于mysql基础架构教程之查
mysql5.7.23版本安装教程及配置方法

mysql5.7.23版本安装

这篇文章主要介绍了mysql5.7.23版本安装教程及配置方
MYSQL5.7.24安装没有data目录和my-default.ini及服务无法启动的完美解决办法

MYSQL5.7.24安装没有d

这篇文章主要介绍了MYSQL-5.7.24安装,没有data目录和m