我们需要打印'*' 20次,然后是19次,以此类推,直到我们只打印了1!
delimiter $$
create procedure test()
begin
set @ans = 20;
while(@ans>0) do
select repeat('*',@ans);
set @ans = @ans - 1;
end while;
end $$
delimiter ;
call test();
这是在完成任务的同时,也在每个字符行后打印了(repeat('*',@ans))
。我做错了什么?
2条答案
按热度按时间7lrncoxx1#
这是你想要的吗
您可以添加您想要的别名在这个例子中它的
*
wfveoks02#
你的存储过程执行了一个select语句20次,每个select语句都有自己的 result-set,所以这就是你所说的原因:* 打印(repeat('*',@ans))在每个相应的字符行 * 之后。
相反,您可以使用一个变量来存储while循环中的 * 填充字符串 *,然后在循环外选择该变量。
see demo