CREATE PROCEDURE tp() BEGIN SET @sum:=1024; SET @num:=1024; SET @i:=0; WHILE @num>0 DO SET @num:=@num/2-1; SET @i:=@i+1; END WHILE; SELECT @i; END为什么不输出i
时间: 2023-06-14 17:06:01 浏览: 57
在您的存储过程中,虽然您声明了变量和循环,但您没有将循环的结果赋值给任何变量或表,因此存储过程无法输出任何结果。您可以使用SELECT语句将@i的值输出到控制台或将其存储在表中。例如,您可以将SELECT语句添加到存储过程的最后:
```
CREATE PROCEDURE tp()
BEGIN
SET @sum:=1024;
SET @num:=1024;
SET @i:=0;
WHILE @num>0 DO
SET @num:=@num/2-1;
SET @i:=@i+1;
END WHILE;
SELECT @i;
END
```
然后,您可以使用以下语句来执行存储过程并查看结果:
```
CALL tp();
```
这将在控制台上输出值1,这是@i的值。
相关问题
cretae function fun1(n int) returns int deterministic begin declare sum int default 0; declare i int default 1; while i<=n do set sum := sum + i; set i := i + 1; end while; return sum; end; 哪里有错
这个函数看起来是正确的,但是你缺少了一个 DELIMITER 命令以指定新的语句结束符号。下面是一个修正后的代码:
```
DELIMITER //
CREATE FUNCTION fun1(n INT) RETURNS INT DETERMINISTIC BEGIN
DECLARE sum INT DEFAULT 0;
DECLARE i INT DEFAULT 1;
WHILE i<=n DO
SET sum := sum + i;
SET i := i + 1;
END WHILE;
RETURN sum;
END //
DELIMITER ;
```
这里我们使用 DELIMITER 命令指定了新的语句结束符号 //,这样在函数内部使用 ; 也不会被误解为整个 CREATE FUNCTION 语句的结束。同时在最后使用 DELIMITER ; 将语句结束符号恢复为 ;。
优化代码 delimiter// create procedure zcc() BEGIN set @a=100; while @a<=1000 do if(@a%7=0 and @a%9=0) then select @a; end if; set @a=@a+1; end while; end //
这是一个MySQL存储过程,名为zcc,它的作用是找出100到1000之间同时能被7和9整除的数。现在来优化一下代码:
1. 将select语句改为insert语句,将结果插入到一个临时表中,避免在循环中频繁进行输出操作。
2. 将if语句的判断条件改为使用and运算符连接,提高代码可读性和执行效率。
3. 将while循环改为使用for循环,提高代码可读性。
优化后的代码如下:
```
delimiter //
create procedure zcc()
begin
declare a int;
create temporary table if not exists tmp_zcc (a int);
for a in 100..1000 do
if (a % 7 = 0 and a % 9 = 0) then
insert into tmp_zcc values (a);
end if;
end for;
select * from tmp_zcc;
end //
```
这样,优化后的存储过程可以更快地找出100到1000之间同时能被7和9整除的数。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)