DECLARE 语句
DECLARE 语句用于定义程序本地的各种项目:
● 局部变量。
● 条件和 handler。
● 光标。
DECLARE 只允许用在 BEGIN ... END 复合语句中,并且必须在其开始处,在任何其他语句之前。
声明必须遵循一定的顺序。游标声明必须出现在 handler 声明之前。变量和条件声明必须出现在游标或 handler 声明之前。
存储程序中的变量
系统变量和用户定义变量可以在存储程序中使用,就像它们可以在存储程序上下文之外使用一样。此外,存储程序可以使用 DECLARE 来定义局部变量,而存储例程(过程和函数)可以声明带有参数,这些参数在例程和调用程序之间传递值。
● 要声明局部变量,请使用 DECLARE 语句。
● 可以直接用 SET 语句设置变量。
● 查询的结果可以使用 SELECT ... INTO var_list 存储到本地变量,或者打开光标,使用 FETCH ... INTO var_list 存储到本地变量。
不允许为存储过程或函数参数或存储程序局部变量指定 DEFAULT(例如,使用SET var_name = DEFAULT语句)。在 MySQL 8.0 中,这会导致语法错误。
本地变量 DECLARE 语句
DECLARE var_name [, var_name] ... type [DEFAULT value]
此语句声明存储程序中的局部变量。要为变量提供默认值,请使用 DEFAULT 子句。该值可以指定为表达式;它不必是常量。如果缺少 DEFAULT 子句,则初始值为 NULL。
就数据类型和溢出检查而言,局部变量被视为等同于存储例程参数。
变量声明必须出现在游标或 handler 声明之前。
局部变量名不区分大小写。允许的字符和引用规则与其他标识符相同。
局部变量的作用域是声明它的 BEGIN ... END 块。变量可以在嵌套在声明块中的块中引用,但声明同名变量的块除外。
官方网址:
https://dev.mysql.com/doc/refman/8.0/en/declare.html
https://dev.mysql.com/doc/refman/8.0/en/stored-program-variables.html
https://dev.mysql.com/doc/refman/8.0/en/declare-local-variable.html




