我正在运行一个存储过程。问题似乎是它将进入 if 语句。同样出于某种原因,无论我使用多少选择,它都只会返回第一个。我已经从另一个非常有用的存储过程中复制了它,但是这个不会成功。有什么想法吗?
DROP PROCEDURE IF EXISTS genSelPriceTier;
DELIMITER $$
CREATE PROCEDURE genSelPriceTier(tier_id INT, default_id INT)
BEGIN
DECLARE rowCount INT DEFAULT 0;
SELECT * FROM price_tier WHERE price_tier_id = tier_id;
SET rowCount = FOUND_ROWS();
IF rowCount < 1 THEN
SELECT * FROM price_tier WHERE price_tier_id = default_id;
END IF;
END$$
DELIMITER ;
最佳答案
有一个bug报告与 FOUND_ROWS() 的使用相关。因此,我建议对返回的行数使用 Count(*)。像下面这样的东西应该可以工作。
DROP PROCEDURE IF EXISTS genSelPriceTier;
DELIMITER $$
CREATE PROCEDURE genSelPriceTier(tier_id INT, default_id INT)
BEGIN
DECLARE rowCount INT DEFAULT 0;
SELECT COUNT(*) INTO rowCount FROM price_tier WHERE price_tier_id = tier_id
IF rowCount < 1 THEN
SELECT * FROM price_tier WHERE price_tier_id = default_id;
END IF;
END$$
DELIMITER ;
关于Mysql存储过程多选,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9038824/