mysql会话变量
什么是“会话”?
比如我这里用msyql客户端工具创建了2个查询分析器,就是2个会话。
会话变量
SET @num=1; #设置一个变量等于1
SELECT @num; #查询该变量
这时候如果我们:
SELECT @num;
还是返回上面的结果,因为这个变量已经存在当前会话中了(只要不结束当前会话就一直存在)。
如果在另外一个会话去查询,就不存在了。
因为这个特性,所以我们可以在每次执行之前初始化。
SELECT查询的数据如何放到变量中?
#初始化2个变量
SET @gid=0;
SET @user_name='';
#把查询的数据装入2个变量
SELECT id,user_name into @gid,@user_name FROM user_sys WHERE user_name='user18';
#查询这2个变量
SELECT @gid,@user_name;
演练
我们来模拟一个用户登录的业务,用存储过过程。
定义存储过程:
BEGIN
SET @gid=0;
SET @user_name='';
SET @_result='login success';
SELECT id,user_name into @gid,@user_name FROM user_sys WHERE user_name=_username AND user_pwd=_userpwd;
IF @gid=0 THEN #登录不成功
SET @_result='login error';
END IF;
SELECT * FROM (SELECT @_result as _result) a,(SELECT @gid,@user_name) b;
END;
然后我们新建查询分析器,调用存储过程
call sp_user_login('user5',123456)
#sp_user_login是上面我们定义的存储过程保存的名词