MySQL 存储过程 while 语句里不能声明 DECLARE 变量

博客指出在 while do 语句里不能声明变量,否则会出现语法错误,博主花费较长时间才找到此答案。

在 while do 语句里千万不能声明变量, 否则会报语法错误, 找了好久才找到的答案.

### MySQL 存储过程中的 WHILE 循环 在 MySQL 中,`WHILE` 循环是一种用于根据特定条件反复执行一组 SQL 语句的结构。当指定的条件为 `TRUE` 时,循环体内的代码会被持续执行,直到条件变为 `FALSE` 或者遇到 `LEAVE` 语句退出循环。 以下是 `WHILE` 循环的标准语法: ```sql WHILE condition DO -- 要执行的SQL语句或代码块 END WHILE; ``` 其中,`condition` 是一个布尔表达式,只有在其值为 `TRUE` 的情况下才会进入并重复执行循环内部的逻辑[^1]。 #### 示例:使用 `WHILE` 循环实现计数器功能 以下是一个简单的例子,展示如何通过 `WHILE` 循环在一个存储过程中打印从 1 到 5 的数字: ```sql DELIMITER $$ CREATE PROCEDURE count_to_five() BEGIN DECLARE counter INT DEFAULT 1; WHILE counter <= 5 DO SELECT CONCAT('Number ', counter); SET counter = counter + 1; END WHILE; END$$ DELIMITER ; ``` 在这个示例中: - 使用了变量 `counter` 来跟踪当前迭代次数。 - 当 `counter` 小于等于 5 时,每次都会输出一条消息,并将 `counter` 增加 1。 - 这种方式展示了如何利用 `WHILE` 循环逐步处理一系列操作[^3]。 #### 实际应用案例:累加求和 假设我们需要编写一个存储过程来计算给定范围内所有整数的总和,可以采用如下方法: ```sql DELIMITER $$ CREATE PROCEDURE sum_of_numbers(IN start_num INT, IN end_num INT, OUT total_sum INT) BEGIN DECLARE current_number INT DEFAULT start_num; SET total_sum = 0; WHILE current_number <= end_num DO SET total_sum = total_sum + current_number; SET current_number = current_number + 1; END WHILE; END$$ DELIMITER ; -- 调用存储过程 CALL sum_of_numbers(1, 10, @result); SELECT @result AS SumOfNumbers; ``` 此程序接受两个输入参数 (`start_num`, `end_num`) 和一个输出参数 `total_sum`,它会返回从起始数值到结束数值之间所有整数相加之和的结果[^4]。 --- ###
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值