1.定义用户变量(或者赋值)
set @变量名=值
-- 创建自定义用户变量,当当前的用断开连接的时候就会消失
set @value=1;
2.查询用户变量值
select @变量
-- 查询定义的数据
select @value;
3.在当前的存储过程和函数中使用变量
- 定义变量:
declare 变量名[,变量名2...] 变量类型 [default 默认值]
- 赋值变量:
set 变量名1=变量值1(或者表达式)[ ,变量名2=变量值2(或者表达式)]
- 使用变量:
select 列名[,列名...] into 变量名1[,变量名二...]
4.创建更新数据的存储过程
创建表mytest
-- 创建更新的存储过程
DELIMITER //
CREATE PROCEDURE updateMyTest(uid INT,newMoney DOUBLE)
BEGIN
DECLARE isexists INT DEFAULT 0; -- 定义变量必须在当前的begin中
SELECT COUNT(1) INTO isexists FROM mytest WHERE id=uid ; -- 使用查询的(into)方式赋值
IF isexists<>0 THEN -- 第一个条件
IF newMoney>0 THEN -- 第二个条件
UPDATE mytest SET money=newMoney WHERE id=uid;
SET isexists=1; -- 使用set方式为变量赋值
ELSE
SET isexists=-1;
END IF; -- 结束第二个条件
END IF; -- 结束第一个条件
SELECT (CASE isexists WHEN -1 THEN '执行失败' WHEN 0 THEN 'id不存在' ELSE '执行成功' END)AS '执行结果' ;-- 使用case when then else end 的switch条件
END //
DELIMITER ;
测试:CALL updateMyTest(1,10000);
5.创建输入成绩返回结果的函数
-- 根据输入的成绩获得成绩的结果
DELIMITER //
CREATE FUNCTION getScoreResult(score INT)
RETURNS CHAR(2)
BEGIN
DECLARE result CHAR(2) DEFAULT '';
IF score>90 THEN
SET result='优';
ELSEIF score>80 THEN
SET result='良';
ELSEIF score>70 THEN
SET result='一般';
ELSE
SET result='差';
END IF; --结束if条件
RETURN result;
END //
DELIMITER ;
测试:SELECT getScoreResult(50);
6.总结
1.定义用户变量使用set @变量,该变量随着用户连接断开就直接消失
2.赋值都是使用set 变量名=值;一定要加分号
3.使用case 变量 when 值 then … else end ,其中else相当于switch中的default
,一定要加上end结束case语法
4.使用if-elseif-else或者if-else的时候需要在末尾加上end if用来结束if的语法
以上纯属个人见解,如有问题请联系本人!