MYSQL - 错误代码:1242。子查询返回超过1行

时间:2018-06-01 03:14:55

标签: mysql sql

我在执行此程序时遇到问题并且不知道如何修复它,这就是全部。

delimiter $$
    create procedure Ex_XII(data_partidaTre date,data_chegadaTre date,horario_partidaTre time,horario_chegadaTre time,distanciaTre varchar(200),
        id_CidOri_fk int,
        id_CidDes_fk int,
        id_Oni_fk int)

            begin
                DECLARE valor double;
                    if((select situacaoPol from Poltrona where Poltrona.id_Oni_fk=id_Oni_fk)='LIVRE')then
                        if(id_CidOri_fk != id_CidDes_fk)then
                            if(data_chegadaTre>=data_partidaTre)then
                                if(distanciaTre>0 and distanciaTre<50)then
                                    set valor = 30;
                                 insert into Trecho_Viagem values(null,data_partidaTre,data_chegadaTre,horario_partidaTre ,horario_chegadaTre ,distanciaTre,
                                                                        valor,
                                                                        id_CidOri_fk ,
                                                                        id_CidDes_fk ,
                                                                        id_Oni_fk ); 
                                else
                                    if(distanciaTre>=50 and distanciaTre<200)then
                                        set valor = 50; 
                                    else                                    
                                        set valor = 100;
                                    end if;
                                end if;                              
                            else
                                select 'Isto não é uma máquina do tempo';
                            end if;
                        else
                            select 'Você já está nesta cidade';
                        end if;
                    else
                        select'Existem poltronas ocupadas';
                    end if;
            end;
$$ delimiter ;

call Ex_XII('2000/12/12','2000/12/17','12:12:12','12:12:12','51',1,1,1);

2 个答案:

答案 0 :(得分:0)

检查以下声明是否不会返回多行 - &gt;

if((select situacaoPol from Poltrona where Poltrona.id_Oni_fk=id_Oni_fk)='LIVRE')then
...

答案 1 :(得分:0)

我实际上成功了, 将第一个“IF”改为 if((从Poltrona选择idPol,其中'Ocupada')为空)然后