调用过程mysql没有返回值

时间:2013-04-25 11:38:14

标签: mysql null return-value procedure

我在mysql中有一个过程,它有4个参数作为输入和3个OUTPUT参数,一个OUTPUT参数不返回任何内容(null)。

DELIMITER $$
drop procedure if exists `cierreMes`$$
create procedure cierreMes (in tarjeta varchar(100),in bancoBus varchar(100),in mes int,in anyo int, out total int, out nulas int, out erroneas int)
begin
    declare stockActual int default 0;
    declare cantidad int;
    /*declare xcantidad,xnulas,xerroneas int;*/
    declare entrada, salida int default 0;
    declare total int default 0;


    select stock
        into stockActual
    from almacen
    where idProducto = 
        (select idProducto from productos where productos.banco = bancoBus and productos.plastico = tarjeta);

    call entradasSalidas(tarjeta,bancoBus,mes,anyo,@ent,@sal);
    set entrada = @ent;
    set salida = @sal;

    call obtenerMovimientosMes(tarjeta,bancoBus,mes,anyo,@cant,@nul,@err);
    set cantidad = @cant;
    set nulas = @nul;
    set erroneas = @err;    

    set total =(stockActual + entrada) - (salida + cantidad);

    select total; 

end$$
DELIMITER ;

call cierreMes('4B MC','SANTANDER',3,2013, @total, @nulas, @erroneas);

select @total, @nulas, @erroneas;
  

当我“呼叫”@nulas和@erroneas返回一个值,但@total   什么都没有。

选择总计,它的工作正常。但是没有返回一个值,在这个选择中:select @total,@ nors,@ erroneas; @total为null。

1 个答案:

答案 0 :(得分:0)

您使用以下公式计算total

set total =(stockActual + entrada) - (salida + cantidad);

如果计算中使用的其中一个值为NULL,那么总计将为NULL

我可以看到entradasalidacantidad的set语句。但是stockActual的价值是什么?

您似乎缺少一个将设置stockActual

值的语句