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

最新资讯
中国互联网的中年危机

中国互联网的中年危机

今年以来,腾讯和百度市值最高跌幅21%,这个百分比对腾讯
万亿市值被严重低估?苹果面临股价下跌的可能性更大

万亿市值被严重低估?苹

苹果股价被低估还是高估了?
乔布斯一生中的3次阴差阳错、柳暗花明

乔布斯一生中的3次阴

乔布斯的一生,极端戏剧化。今天我想讲讲他一生中3次阴
潘越飞:世上已无捷径,“重”才是时代关键词

潘越飞:世上已无捷径,“

重,是这一波经济周期的关键词,要干足苦活累活脏活。不再
macOS被曝新漏洞:黑客可直接绕开系统安全警告

macOS被曝新漏洞:黑客

一位著名Mac系统黑客刚刚开发了一种新攻击手段:可以在
万亿美元是苹果的巅峰?还是衰落的开始?

万亿美元是苹果的巅峰

在人工智能时代,如果横向对比美国的其他公司,不难发现苹
最新文章
MySql 8.0.11安装配置教程

MySql 8.0.11安装配置

这篇文章给大家介绍了MySql 8.0.11安装配置教程,本文给
mysql5.7.22 下载过程图解

mysql5.7.22 下载过程

这篇文章主要介绍了mysql5.7.22 下载过程图解,非常不错
MySql 5.7.17压缩包免安装的配置过程图解

MySql 5.7.17压缩包免

这篇文章主要介绍了MySql 5.7.17压缩包免安装的配置过
MySQL5.7.20解压版安装和修改root密码的教程

MySQL5.7.20解压版安

这篇文章主要介绍了MySQL5.7.20解压版安装和修改root
MySQL8.0.11安装总结教程图解

MySQL8.0.11安装总结

本文通过图文并茂的形式给大家介绍了MySQL8.0.11安装
Windows下MySQL8.0.11社区绿色版安装步骤图解

Windows下MySQL8.0.11

在本教程中使用MySQL最新的MySQL服务8.0.11的社区绿色