• MySQL变量的定义与赋值


    MySQL存储过程中,定义变量有两种方式:
    1.使用set或select直接赋值,变量名以 @ 开头.
    例如:set @var=1;
    可以在一个会话的任何地方声明,作用域是整个会话,称为会话变量。

    2.以 DECLARE 关键字声明的变量,只能在存储过程中使用,称为存储过程变量,例如:
    DECLARE var1  INT DEFAULT 0;  
    主要用在存储过程中,或者是给存储传参数中。

    两者的区别是:
    在调用存储过程时,以DECLARE声明的变量都会被初始化为 NULL。而会话变量(即@开头的变量)则不会被再初始化,在一个会话内,只须初始化一次,之后在会话内都是对上一次计算的结果,就相当于在是这个会话内的全局变量。

    在存储过程中,使用动态语句,预处理时,动态内容必须赋给一个会话变量。
    例:
    set @v_sql= sqltext;
    PREPARE stmt FROM @v_sql;  
    EXECUTE stmt;     
    DEALLOCATE PREPARE stmt;

    变量可以在子程序(函数、存储过程、匿名块)中声明并使用,这些变量的作用范围是在BEGIN...END程序中。

    定义变量

    语法格式:

    DECLARE var_name [, var_name]... data_type [ DEFAULT value ];  

    var_name为局部变量的名称;

    DEFAULT value子句指定指定变量的默认值,value除了可以被声明为一个常量外,还可以被指定为一个表达式。如果没有DEFAULT子句,变量的初始值为NULL。

    示例:

    DECLARE myparam INT DEFAULT 100;

    变量赋值

    定义变量以后,为变量赋值可以改变变量的默认值。MySQL中使用SET语句为变量赋值。

    在存储程序中的SET语句是一般SET语句的扩展版本。被参考变量可能是子程序内声明的变量,或者是全局服务器变量,如系统变量或者用户变量。

    语法1:

    SET var_name=expr [, var_name=expr]...;  

    示例1:

    声明3个变量,分别为var1, var2和var3,数据类型为INT,使用SET为变量赋值

    DECLARE var1, var2, var3 INT;  
    SET var1=10, var2=20;  
    SET var3=var1+var2;  

    语法2:SELECT INTO为变量赋值

    SELECT INTO语法把选定的列直接存储到对应位置的变量。

    MySQL中还可以通过SELECT...INTO为一个或者多个变量赋值,语法如下:

    SELECT col_name[,...] INTO var_name[,...] table_expr [WHERE...];  

    示例2:

    声明变量v_employee_name和v_employee_salary,通过SELECT...INTO语句查询指定记录并为变量赋值:

    DECLARE v_employee_name VARCHAR(100);  
    DECLARE v_employee_salary DECIMAL(8,4);  
      
    SELECT employee_name, employee_salary  
    INTO v_employee_name, v_employee_salary  
    FROM employees  
    WHERE employee_id=1;  
  • 相关阅读:
    springcloud12-spring cloud stream
    Linux上安装gitbook并拉取git项目编译
    Python 之一条命令生成项目依赖包文件 requirements.txt
    python跨模块使用全局变量的实现方法
    微信朋友圈测试用例
    linux安装maven
    jenkins上集成sonar
    windows上安装sonar并使用其分析项目
    jquery 点击同级元素隐藏,再点击显示
    10进制转16进制自动补全8位 并高低位转换
  • 原文地址:https://www.cnblogs.com/duhuo/p/4218648.html
Copyright © 2020-2023  润新知