я написал хранимую процедуру для отображения простых чисел до предела и подсчета «сколько простых чисел сгенерировано». Но при вызове процедуры кажется, что второй оператор выбора возвращает свой результат в наборе результатов первого оператора выбора. это происходит только внутри процедуры. Почему? как это решить? пожалуйста, помогите.
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)
** Смотри, есть два набора результатов, но оба имеют одинаковый заголовок столбца ... что здесь будет ?? ?? **