zoukankan      html  css  js  c++  java
  • 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定义的类似全局变量。

  • 相关阅读:
    Struts2(二)
    jiqixuexi
    UTF-8
    mysql load
    linux命令(转)
    apache FTP站点源码下载
    linux 命令
    clickhouse 查询
    CDH learning
    nfs
  • 原文地址:https://www.cnblogs.com/pcheng/p/4943096.html
Copyright © 2011-2022 走看看