存储过程内基础语法---补充while循环

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 ;
3.方法查询结果

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

陪雨岁岁年年

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值