首页 > 解决方案 > 存储过程错误:子查询返回超过 1 个值

问题描述

我的问题是我在尝试执行存储过程时遇到错误:

子查询返回超过 1 个值

这是我的代码:

DELIMITER //
    CREATE PROCEDURE bdfutbol.insertar_equipo (in _nomEquipo varchar(40), in _codLiga char(5),
        in _localidad varchar(60),in _internacional tinyint, out resultadoL TINYINT(1),out resultadoI TINYINT(1)    )
        BEGIN
            set contadorInicial = (select FOUND_ROWS() FROM equipos);
            set resultadoL=(SELECT if (EXISTS (select codLiga from ligas where codLiga=_codLiga),1,0));
            SET resultadoI=0;
            
            if resultadoL=1 THEN 
                BEGIN
                    INSERT INTO equipos values (null,_nomEquipo,_codliga,_localidad,_internacional);
                    if @contadorInicial!=(select FOUND_ROWS() from equipos) then set resultadoI=1;
                    END IF;
                END;
            END IF;
         END //
DELIMITER;

我的问题是我不知道是什么导致了该错误,我已经测试了所有子查询并且它们只返回一行,任何形式的帮助将不胜感激。

由于 found_rows 返回行而不是轮数的建议,设法修复

标签: mysqlsqlstored-proceduressubqueryprocedure

解决方案


我不知道你真正想要实现什么逻辑,但问题是这个逻辑:

if @contadorInicial!=(select FOUND_ROWS() from equipos) then set resultadoI=1;

子查询选择的行数equipos与表中的行数一样多。

我不知道你想做什么,但我认为不止这条线需要修复。您可能会考虑提出一个新问题,其中包含样本数据、期望的结果以及您想要完成的任务的解释。


推荐阅读