### 13.6.4 存储程序中的变量

[13.6.4.1 局部变量 DECLARE 语句](declare-local-variable.html)
[13.6.4.2 局部变量范围和解析](local-variable-scope.html)

系统变量和用户定义变量可以在存储程序中使用，就像它们可以在存储程序上下文之外使用一样。此外，存储的程序可以使用`宣布`定义局部变量，并且可以声明存储的例程（过程和函数）以获取在例程及其调用者之间传递值的参数。

-   要声明局部变量，请使用[`宣布`](declare-local-variable.html)声明，如中所述[第 13.6.4.1 节，“局部变量 DECLARE 语句”](declare-local-variable.html).

-   变量可以直接设置[`放`](set-variable.html)陈述。看[第 13.7.6.1 节，“变量赋值的 SET 语法”](set-variable.html).

-   查询的结果可以使用以下方法检索到局部变量中[`选择 ... 进入 *`var_list`*`](select-into.html)或通过打开光标并使用[`获取...进入 *`var_list`*`](fetch.html).看[第 13.2.10.1 节，“SELECT ... INTO 语句”](select-into.html)， 和[第 13.6.6 节，“光标”](cursors.html).

    有关局部变量的范围以及 MySQL 如何解析模糊名称的信息，请参阅[第 13.6.4.2 节，“局部变量范围和解析”](local-variable-scope.html).

    不允许赋值`默认`存储过程或函数参数或存储程序局部变量（例如`放 *`变量名`* = 默认`陈述）。在 MySQL 8.0 中，这会导致语法错误。
