Mysql хранимая процедура множественного выбора - PullRequest
1 голос
/ 27 января 2012

Я выполняю хранимую процедуру. Кажется, проблема в том, что это войдет в утверждение 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 Ответ

1 голос
/ 27 января 2012

Сообщается об ошибке , связанной с использованием 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 ;
...