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

Xanthe ·
更新时间:2024-11-13
· 999 次阅读

在存储过程中常看到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存储过程 游标 循环使用介绍MySQL存储过程中游标循环的跳出和继续操作示例Mysql存储过程循环内嵌套使用游标示例代码mysql存储过程中使用游标的实例mysql动态游标学习(mysql存储过程游标)mysql的存储过程、游标 、事务实例详解Mysql存储过程中游标的用法实例mysql存储过程之创建(CREATE PROCEDURE)和调用(CALL)及变量创建(DECLARE)和赋值(SET)操作方法MySQL游标概念与用法详解mysql存储过程之游标(DECLARE)原理与用法详解



declare set mysql存储过程 Mysql 变量

需要 登录 后方可回复, 如果你还没有账号请 注册新账号