ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
**1. 变量分类** 变量分为局部变量与用户变量。 **2. 局部变量** ```sql # 语法 DECLARE var_name[, var_name, ...] type_ [DEFAULT value_] - var_name:变量名 - type_:变量类型 - value_:默认值,如果不给默认值,则默认为 null # 可以在函数或存储过程的begin...end中使用局部变量 # 局部变量作用域只在begin...end内 create procedure proce_name(params) begin -- 声明局部变量 declare uname varchar(255) default null; -- 调用set给局部变量赋值 set uname = 'zhangsan'; --也可以调用select...into...给局部变量赋值 select username into uname from account where id=1; end ``` **3. 用户变量** 用户变量在整个会话内都有效,当退出会话时会被自动释放。 ```sql # 用户变量必须使用 @ 开头命名 # 使用 set 声明并初始化一个用户变量 # 用户变量必须初始化 mysql> set @pass='zhangsan'; mysql> select @pass; +----------+ | @pass | +----------+ | zhangsan | +----------+ # 在函数或存储过程的begin...end内声明的 @ 变量也是用户变量 create procedure proce_var() begin set @uname = '张三'; end $ mysql> select @uname $ +----------+ | @uname | +----------+ | 张三 | +----------+ # 可以使用 select...into...声明并初始化一个用户变量 mysql> select * from account; +----+----------+----------+ | id | username | password | +----+----------+----------+ | 1 | 张三 | zhangsan | | 2 | 李四 | lisi | | 3 | 王五 | wangwu | +----+----------+----------+ mysql> select username into @rname from account where id=1; mysql> select @rname; +--------+ | @rname | +--------+ | 张三 | +--------+