2013-04-25 6 views
0

나는 mysql에 프로 시저를 가지고 있으며 입력에는 4 개의 매개 변수가 있고 OUTPUT에는 3 개의 매개 변수가 있고 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 값을 반환하지 않지만.

전체 선택 작동시, 잘 동작합니다. 반환 값은이 선택에서 : @total, @nulas, @erroneas를 선택하십시오. @total은 null입니다.

+0

안녕하세요! 해결되었습니다. 문제는이 줄에 있습니다 : declare total int default 0; 문제를 삭제하면 문제가 사라집니다. – GdePablos

답변

0

는이 공식 total를 계산 : 계산에 사용되는 값 중 하나 NULL이면 총 NULL 될 것이다

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

.

entrada, salidacantidad에 대한 설정 문을 볼 수 있습니다. 그러나 stockActual의 값은 무엇입니까?

stockActual 값을 설정하는 문장이 누락 된 것으로 보입니다.

+0

고마워요. 문제는 내가 총 inizialite total : declare total int default 0; 머리말에있는 그것의 inizialite 때문에 필요하지 않습니다. – GdePablos