我写了一个存储过程来显示质数,直到达到极限并计数“产生了多少个质数”。但是当调用该过程时,似乎第二条选择语句正在第一条选择语句结果集中返回其结果。它仅在过程内部发生。为什么?如何解决呢?请帮忙。
drop procedure if exists prime;
delimiter $$
CREATE procedure prime(in num int)
begin
declare i int;
declare j int;
declare cout int default 0;
drop table if exists temp;
create table temp(prime_no int);
set i=2;
while i < num do
set j=2;
w1: while j <= sqrt(i) do
if mod(i ,j)=0 then
leave w1;
end if;
set j=j+1;
end while;
if j>sqrt(i) then
insert into temp values(i);
set cout=cout+1;
end if;
set i=i+1;
end while;
set @prime_count=cout;
select @prime_count as 'prime_count';
select prime_no as 'prime_numbers' from temp;
end$$
delimiter ;
call prime(27);
and the output is
+-------------+
| prime_count |
+-------------+
| 9 |
+-------------+
1 row in set (0.4541 sec)
+-------------+
| prime_count |
+-------------+
| 2 |
| 3 |
| 5 |
| 7 |
| 11 |
| 13 |
| 17 |
| 19 |
| 23 |
+-------------+
9 rows in set (0.4541 sec)
Query OK, 0 rows affected (0.4541 sec)
**看,有两个结果集,但两个结果集都具有相同的列标题...此处是d prblm吗?**