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 DOIF num%2 =0 THENSET 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 DOIF num%2 =0 THENSET 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 DOIF num%2 =0 THEN-- SET SUM =SUM +num;SET SUM =IFNULL(SUM,0) +num; -- 方法1END 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 THENSET SUM =0;END IF; -- 方法2-- while循环WHILE num<=n DOIF num%2 =0 THENSET 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 ) -- (形参,返回值)-- 方法3BEGIN-- 定义求和变量DECLARE num INT DEFAULT 1;-- while循环WHILE num<=n DOIF num%2 =0 THENSET 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 ;