Mysql存储过程多选

标签 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 ;

最佳答案

有一个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/

相关文章:

php - 查询总是返回NULL

Mysql加密 key

Mysql Cookbook 错误 RecipeNotFound : could not find recipe client for cookbook mysql

sql - 如何在 db2 列选择查询中使用案例

sql - 旋转单行列 T-SQL

mysql - 如何在使用group by时获取特定记录

mysql - 我的存储过程的返回值

mysql存储过程输入参数值

sql-server - mssql存储过程权限问题

Mysql使用select按主键删除(错误1093)