## 存储过程 - 变量
在本节中,您将了解存储过程中的变量,如何声明和使用变量。 此外,您还将了解变量的作用域。
### 声明变量
在 MySQL 中变量必须先声明,然后才能使用它。如下所示:
DECLARE variable_name data_type(size) DEFAULT default_value;
- 变量名必须遵循 MySQL 表列名的命名规则。
- 变量可以是任何 MySQL 数据类型,例如:INT,VARCHAR,DATE 等。
- 当声明一个变量时,它的初始值为NULL。可以使用 DEFAULT 关键字为变量分配默认值。
声明一个名称为 `total_sale` 的变量,数据类型为 INT,其默认值为 0,如下所示:
DECLARE total_sale INT DEFAULT 0;
MySQL 允许使用单个 DECLARE 语句来声明多个相同数据类型的变量,如下所示:
DECLARE x, y, z INT DEFAULT 0;
### 变量赋值
要为变量分配一个值,可以使用 SET 语句,如下所示:
DECLARE total_count INT DEFAULT 0;
SET total_count = 10;
除了 SET 语句,还可以使用 SELECT INTO 语句将查询的结果分配给变量,然后查询返回标量值。 如下所示:
DECLARE total_count INT DEFAULT 0
SELECT COUNT(*) INTO total_count FROM employee
### 变量作用域
变量定义有自己的生命周期范围。如果在存储过程中声明一个变量,当存储过程到达 END 语句时,它将超出范围。
如果在 BEGIN END 块中声明一个变量,它到达 END 语句时将超出了范围。
可以在不同范围中声明相同名称两个或多个变量,因为变量仅在其自身作用域中有效。但是,在不同的范围中声明相同名称的变量不是一种好的编程实践。
以 *@* 符号开头的变量是会话变量,它在会话结束前是总是可用及可访问的。