#mysql #stored-procedures
#mysql #хранимые процедуры
Вопрос:
Я использую следующую хранимую процедуру
DELIMITER //
CREATE PROCEDURE SP_WHILE (IN param1 INT)
BEGIN
DECLARE variable1 INT;
SET variable1 = 0;
WHILE variable1 < param1 DO
SELECT variable1 AS id;
SET variable1 = variable1 1;
END WHILE;
END //
CALL SP_WHILE (5);
чтобы получить следующий результат:
----
| id |
----
| 0 |
| 1 |
| 2 |
| 3 |
| 4 |
----
Но в настоящее время он показывает 5 разных результатов в 5 разных окнах. Как я могу это решить? Пожалуйста, помогите мне дать ваше ценное предложение.
Ответ №1:
Да, так это, скорее всего, произойдет. Чтобы избежать этого, вы можете создать временную таблицу и сохранить в ней значения, а затем выбрать в конце что-то вроде
DELIMITER //
CREATE PROCEDURE SP_WHILE (IN param1 INT)
BEGIN
DECLARE variable1 INT;
SET variable1 = 0;
create temporary table test_1 (id int);
WHILE variable1 < param1 DO
insert into test_1 values (variable1);
SET variable1 = variable1 1;
END WHILE;
select * from test_1 ;
END //
delimiter ;
Так вот как это выглядит в mysql
mysql> DELIMITER //
mysql> CREATE PROCEDURE SP_WHILE (IN param1 INT)
-> BEGIN
-> DECLARE variable1 INT;
-> SET variable1 = 0;
-> create temporary table test_1 (id int);
-> WHILE variable1 < param1 DO
-> insert into test_1 values (variable1);
-> SET variable1 = variable1 1;
-> END WHILE;
-> select * from test_1 ;
-> END //
Query OK, 0 rows affected (0.01 sec)
mysql> delimiter ;
mysql> CALL SP_WHILE (5) ;
------
| id |
------
| 0 |
| 1 |
| 2 |
| 3 |
| 4 |
------
5 rows in set (0.03 sec)