Почему оператор выбора отображает результат в наборе результатов предыдущего оператора выбора внутри хранимой процедуры в mysql - PullRequest
0 голосов
/ 20 марта 2020

я написал хранимую процедуру для отображения простых чисел до предела и подсчета «сколько простых чисел сгенерировано». Но при вызове процедуры кажется, что второй оператор выбора возвращает свой результат в наборе результатов первого оператора выбора. это происходит только внутри процедуры. Почему? как это решить? пожалуйста, помогите.

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)

** Смотри, есть два набора результатов, но оба имеют одинаковый заголовок столбца ... что здесь будет ?? ?? **

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...