Mysql存储过程多选

时间:2012-01-27 19:19:32

标签: mysql stored-procedures select

我正在运行存储过程。问题似乎是它会进入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 ;

1 个答案:

答案 0 :(得分:1)

报告有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 ;