在存储过程中使用变量
在存储过程和函数中,可以定义和使用变量。用户可以使用关键字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. 为变量赋值
在MySQL中可以使用关键字SET来为变量赋值,SET语句的基本语法如下:
SET var_name=expr[,var_name=expr]…
其中,关键字SET用来为变量赋值;参数var_name是变量的名称;参数expr是赋值表达式。一个SET语句可以同时为多个变量赋值,各个变量的赋值语句之间用逗号隔开。
例如,将变量tmp_id赋值为88,代码如下:
SET tmp_id = 88;
在MySQL中,还可以使用SELECT…INTO语句为变量赋值。其基本语法如下:
SELECT col_name[,…] INTO var_name[,…]
FROM table_name WHERE condition
其中,参数col_name表示查询的字段名称;参数var_name是变量的名称;参数table_name指表的名称;参数condition指查询条件。
【示例11-2】
从表employee中查询id为3的记录,将该记录的id值赋给变量tmp_id,代码如下:
SELECT id INTO tmp_id
FROM grade WEHRE id=sid;
mysql> use school; #选择数据库school
mysql> drop PROCEDURE if exists query_student_class_info;
mysql> DELIMITER $$
mysql> create procedure query_student_class_info (IN sid int, OUT cname varchar(128), OUT ccount int)
BEGIN
declare tmp_name varchar(128);
declare tmp_count int;
declare tmp_cid int;
select class_id into tmp_cid from student where id = sid;
select name, count into tmp_name, tmp_count from class where id = tmp_cid;
set cname = tmp_name, ccount = tmp_count;
END;
$$
DELIMITER ;
mysql> call query_student_class_info(4, @name, @count); #调用存储过程
mysql> select @name, @count;
具体操作
结语:
时间: 2020-07-14