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

最新资讯
品钛科技将于纳斯达克上市 发行价区间定为10-12美元

品钛科技将于纳斯达克

品钛科技上市发行价区间将在10-12美元之间,将于2018年
贾跃亭有毒!许家印、孙宏斌过去一年财富缩百亿

贾跃亭有毒!许家印、孙

地产富豪身家出现不同程度缩水,但许家印还是蝉联地产首
传今日头条正进行40亿美元Pre-IPO轮融资

传今日头条正进行40亿

根据“IPO早知道”独家消息源,今日头条正进行Pre-IPO轮
短视频新农村故事:真实乡土生活与被消解的残酷物语

短视频新农村故事:真实

今年最可怕的网络用语是什么?华农兄弟向你发出漂亮警告
人民日报:室内空气污染 别成“呼吸之痛”

人民日报:室内空气污染

日前,自如出租房被曝出甲醛超标,一时间,有关甲醛等装修污
股价跌逾8% eBay可能比它想象中的更需要Paypal

股价跌逾8% eBay可能

周五eBay股价在华尔街遭受重创,原因是PayPal在财报中表
最新文章
Mysql优化order by语句的方法详解

Mysql优化order by语

本篇文章我们将了解ORDER BY语句的优化,在文中给大家提
Innodb中mysql快速删除2T的大表方法示例

Innodb中mysql快速删

这篇文章主要给大家介绍了关于Innodb中mysql快速删除2
mysql5.7版本root密码登录问题的解决方法

mysql5.7版本root密码

这篇文章主要为大家详细介绍了mysql5.7版本root密码登
mysql 8.0.11安装配置方法图文教程

mysql 8.0.11安装配置

这篇文章主要为大家详细介绍了mysql 8.0.11安装配置方
mysql 8.0.12 winx64解压版安装图文教程

mysql 8.0.12 winx64

这篇文章主要为大家详细介绍了mysql 8.0.12 winx64解
Windows10下mysql 8.0.12解压版安装配置方法图文教程

Windows10下mysql 8.0

这篇文章主要为大家详细介绍了Windows10下mysql 8.0.1