2013-04-25 4 views
0

У меня есть процедура в mysql, и у меня есть 4 параметра в качестве Input и 3 параметра OUTPUT, и один параметр OUTPUT не возвращает ничего (null).нет возвращаемого значения процедуры вызова mysql

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: select @total, @nulas, @erroneas; @total - null.

+0

Hi! это решение. Проблема в этой строке: declare total int default 0; Удаление проблемы исчезает. – GdePablos

ответ

0

Вы вычислить total с этой формулой:

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

Если одна из величин, используемых при расчете является NULL, то общая сумма будет NULL.

Я могу видеть выписки для entrada, salida и cantidad. Но каково значение stockActual?

Кажется, вам не хватает инструкции, которая установит значение stockActual.

+0

Спасибо, что его решили. проблема заключалась в том, что i inizialite total: declare total int default 0; и не нужно, потому что его inizialite в заголовке. – GdePablos

Смежные вопросы