【MySQL存储过程和函数】存储过程定义变量与用户变量详解

目录

一、在存储过程中定义变量

1.定义变量 

2.为变量赋值

  ①使用set关键词赋值

  ②使用SELECT…INTO语句为变量赋值

二、使用@创建用户变量 


一、在存储过程中定义变量

    在存储过程和函数中,可以定义和使用变量。用户可以使用关键字DECLARE来定义变量,然后为变量赋值。这些变量的作用范围是在BEGIN…END程序段中。 

1.定义变量 

    在MySQL中,可以使用DECLARE关键字来定义变量。定义变量的基本语法如下: 

DECLARE var_name[,…] type [DEFAULT value]
  • 关键字DECLARE是用来声明变量的;
  • 参数var_name是变量的名称,可以同时定义多个变量;
  • 参数type用来指定变量的类型;
  • DEFAULT value子句将变量默认值设置为value,没有使用DEFAULT子句时,默认值为NULL。 

    定义变量cid,数据类型为INT型,默认值为10,代码如下: 

declare cid int default 10;

2.为变量赋值

  ①使用set关键词赋值

      SET语句的基本语法如下: 

SET var_name=expr[,var_name=expr]…  #可以是确定值,也可以是表达式
  • 关键字SET用来为变量赋值;
  • 参数var_name是变量的名称;
  • 参数expr是赋值表达式。一个SET语句可以同时为多个变量赋值,各个变量的赋值语句之间用逗号隔开。 

    例如,将变量temp_id赋值为88,代码如下: 

set temp_id=88;

②使用SELECT…INTO语句为变量赋值

      其基本语法如下:

SELECT col_name[,…] INTO var_name[,…]     
     FROM table_name WHERE condition  
  • 参数col_name表示查询的字段名称;
  • 参数var_name是变量的名称;
  • 参数table_name指表的名称;
  • 参数condition指查询条件。 

    在下面student表和class表创建存储过程proc_query_student, 要求输入学生id,返回学生所在班级以及班级人数:

【MySQL存储过程和函数】存储过程定义变量与用户变量详解

delimiter $$
create procedure proc_query_student(in sid int,out cname varchar(64),out ccount int)
begin
    declare temp_cid int;
    declare temp_cname varchar(64);
    declare temp_ccount int;
    select class_id into temp_cid from student where id=sid;
    select name,count into temp_cname,temp_ccount from class where id=temp_cid;
    set cname=temp_cname,ccount=temp_ccount;
end;
$$

mysql> delimiter ;

二、使用@创建用户变量 

    使用@关键字创建“用户变量”,“用户变量的作用范围”在整个当前对话中,其语法形式如下:

@ var_name;

    例如创建“用户变量”调用上面的存储过程,并使用select语句查看变量:

call proc_query_student(3,@name,@count);
select @name,@count;

    查询结果:

【MySQL存储过程和函数】存储过程定义变量与用户变量详解

上一篇:python web03-08-多线程共享全局变量-2(线程传递变量方法)


下一篇:Koa-Todos案例