1.基础语法
while循环
初始化语句;
WHILE 条件判断语句 DO
循环体语句;
条件控制语句;
END WHILE;
2.举例
计算1~100之间的偶数和
【注:num只能num=num+1 不能num++,num+=1; 】
<1>存储过程内部查询
DELIMITER $
CREATE PROCEDURE pro_test6()
BEGIN
-- 定义求和变量
DECLARE result INT DEFAULT 0;
-- 定义初始化变量
DECLARE num INT DEFAULT 1;
-- while循环
WHILE num<=100 DO
IF num%2 =0 THEN
SET result =result +num;
END IF;
SET num =num +1;
END WHILE;
-- 查询求和结果
SELECT result;
END $
DELIMITER ;
-- 调用pro_test6存储过程
CALL pro_test6();
<2>存储过程外部查询,并将结果返回【定义输入输出参数】
- 方法一:定义初始变量,将值赋给输出参数
DELIMITER $
CREATE PROCEDURE pro_test7(IN n INT ,OUT SUM INT ) -- (形参,返回值)
BEGIN
-- 定义求和变量
DECLARE result INT DEFAULT 0;
-- 定义初始化变量
DECLARE num INT DEFAULT 1;
-- while循环
WHILE num<=n DO
IF num%2 =0 THEN
SET result =result +num;
END IF;
SET num =num +1;
END WHILE;
-- 查询求和结果
SET SUM =result;
END $
DELIMITER ;
-- 调用pro_test7存储过程
CALL pro_test7(10,@sum) ;
SELECT @sum ;
- 方法二:IFNULL(SUM,0)函数给输出函数初始化赋值
DELIMITER $
CREATE PROCEDURE pro_test8(IN n INT ,OUT SUM INT ) -- (形参,返回值)
BEGIN
-- 定义求和变量
DECLARE num INT DEFAULT 1;
-- while循环
WHILE num<=n DO
IF num%2 =0 THEN
-- SET SUM =SUM +num;
SET SUM =IFNULL(SUM,0) +num; -- 方法1
END IF;
SET num =num +1;
END WHILE;
END $
DELIMITER ;
-- 调用pro_test8存储过程
CALL pro_test8(10,@sum) ;
SELECT @sum ;
- 方法三:IF SUM IS NULL THEN
SET SUM =0;
END IF;
在while循环对输出参数加非空判断
DELIMITER $
CREATE PROCEDURE pro_test9(IN n INT ,OUT SUM INT ) -- (形参,返回值)
BEGIN
-- 定义求和变量
DECLARE num INT DEFAULT 1;
IF SUM IS NULL THEN
SET SUM =0;
END IF; -- 方法2
-- while循环
WHILE num<=n DO
IF num%2 =0 THEN
SET SUM =SUM +num;
END IF;
SET num =num +1;
END WHILE;
END $
DELIMITER ;
-- 调用pro_test9存储过程
CALL pro_test9(10,@sum) ;
SELECT @sum ;
- 方法四:SET @sum=0 ;在调用方法时,给输出参数设置初始参数
DELIMITER $
CREATE PROCEDURE pro_test10(IN n INT ,INOUT SUM INT ) -- (形参,返回值)-- 方法3
BEGIN
-- 定义求和变量
DECLARE num INT DEFAULT 1;
-- while循环
WHILE num<=n DO
IF num%2 =0 THEN
SET SUM =SUM +num;
END IF;
SET num =num +1;
END WHILE;
END $
DELIMITER ;
-- 调用pro_test7存储过程
SET @sum=0 ;
CALL pro_test7(10,@sum) ;
SELECT @sum ;