浅谈MySQL存储过程中declare和set定义变量的区别

 更新时间:2016年12月13日 10:19:33   投稿:jingxian  
下面小编就为大家带来一篇浅谈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 @b=@b+1;
  SELECT a,@b;

END
//
DELIMITER ;

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

SET @b=1;

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

CALL temp();

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

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

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

相关文章

  • MySQL 5.6.36 Windows x64位版本的安装教程详解

    MySQL 5.6.36 Windows x64位版本的安装教程详解

    这篇文章主要介绍了MySQL 5.6.36 Windows x64位版本的安装教程详解,非常不错,具有参考借鉴价值,需要的的朋友参考下吧
    2017-05-05
  • 你的like语句为什么没索引详解

    你的like语句为什么没索引详解

    这篇文章主要给大家介绍了关于你的like语句为什么没索引的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用mysql具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2018-10-10
  • MySQL之七种SQL JOINS实现的图文详解

    MySQL之七种SQL JOINS实现的图文详解

    这篇文章主要介绍了MySQL中七种SQL JOINS的实现方法及图文详解,文中也有相关的代码示例供大家参考,感兴趣的同学可以参考阅读下
    2023-06-06
  • 将MySQL从MyISAM转换成InnoDB错误和解决办法

    将MySQL从MyISAM转换成InnoDB错误和解决办法

    原来自己用的是为了装的, 所以在设置database usage(如下图1)的时候按照discuz官方的建议,选的都是Non-Transactional Database Only(只支持MyISAM数据引擎的非事务数据库),用MyISAM数据库,还没涉及到需要InnoDB,因此打算直接不加载INNODB引擎。
    2011-09-09
  • mac系统下mysql 8.0.11 安装指南

    mac系统下mysql 8.0.11 安装指南

    这篇文章主要为大家详细介绍了mac系统下mysql 8.0.11 安装指南,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-08-08
  • MySql各种查询方式详解

    MySql各种查询方式详解

    如果是做数据分析,MySQL里面最重要、最常用的就是数据查询,数据查询不只是简单查询数据库中存储的数据,还要根据需求对数据进行筛选、聚合,以及确定数据以什么样的格式进行显示。MySQL提供了强大、灵活的语句和函数来实现查询的操作
    2022-07-07
  • Mysql恢复误删库表数据完整场景演示

    Mysql恢复误删库表数据完整场景演示

    在开发和在生产中总会出现各种各样的失误和意味,当MySQL的数据或表被删除后不要慌,下面这篇文章主要给大家介绍了关于Mysql恢复误删库表数据的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2024-07-07
  • mysql多主双向和级联复制

    mysql多主双向和级联复制

    这篇文章主要介绍了mysql多主双向和级联复制,架构内各个库均同时开启binlog的master和slave,主主库额外开启级联复制开关,下面详细内容,需要的小伙伴可以参考一下
    2022-01-01
  • Mysql如何查看是否使用到索引

    Mysql如何查看是否使用到索引

    这篇文章主要介绍了Mysql如何查看是否使用到索引问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-12-12
  • Navicat 连接MySQL8.0.11出现2059错误

    Navicat 连接MySQL8.0.11出现2059错误

    这篇文章主要介绍了Navicat 连接MySQL8.0.11出现2059错误,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-11-11

最新评论