我创建了这个测试过程:
DELIMITER //
CREATE PROCEDURE `str` (IN var1 INT)
BEGIN
WHILE var1 < 5 DO
SELECT var1;
SET var1 = var1 + 1;
END WHILE;
END //
DELIMITER ;
当我通过phpmyadmin运行它时,没有任何反应。 没有错误,没有确认消息。如果我CALL str(1)
,我会收到一条消息,说该过程不存在。这是怎么回事?
如果要获取var1
的迭代值,则需要WHILE
循环之外的SELECT
。在我的MySQL安装中,以下内容工作正常:
DROP PROCEDURE IF EXISTS `str`;
DELIMITER //
CREATE PROCEDURE `str` (IN var1 INT)
BEGIN
WHILE var1 < 5 DO
SET var1 = var1 + 1;
END WHILE;
SELECT var1;
END //
DELIMITER ;
执行CALL str(1)
返回5