Cita: El proc almacenado esta correcto mi problema es con php
Puede no ser necesariamente cierto. El hecho de que no puedas acceder a un dato que supuestamente el SP está obteniendo, me hace sospechar de que hay un error de ejecución en el SP.
El SP, para ser válido, debe devolver datos en todas las ocasiones, o bien devolver un error. Cuando no devuelve ni lo uno ni lo otro, entonces hay un problema con los datos que se validan, con el rpcoesamientos de esos datos, o con los resultados de los mismos, que PHP no puede manejar.
Personalmente sospecho del uso de las variables de usuario de MySQL que estás poniendo en el SP, ya que a menos que domines conceptualmente esas variables
propias de MySQL, pueden dar lugar a resultados erróneos o inesperados.
Respecto a la sugerencia de cambiar la librería de acceso MYSQL a MYSQLI, te la di yo, y te expliqué la razón: la librería MYSQL, además de obsoleta, no maneja los resultados de consultas como salida de un SP, y eso es un problema ampliamente documentado.
Yendo al punto del SP, que aqui pongo un poco mas limpio:
Código MySQL:
Ver originaldelimiter $$
WHERE Nombre_de_producto
= "arroz"; Precio_entrada
* LEAST(@NUM_BOUGHT
, Cantidad_entrada
) AS expense
, LEAST(@NUM_BOUGHT
, Cantidad_entrada
) AS units
, @NUM_BOUGHT
:= @NUM_BOUGHT
- LEAST(@NUM_BOUGHT
, Cantidad_entrada
) WHERE Nombre_de_producto
= "arroz" AND @NUM_BOUGHT
> 0
delimiter ;
Yo le veo ciertos riesgos a la ejecución usando ese tipo de variables.
¿tienes claro que entre esta linea:?
y esta otra:
Código MySQL:
Ver original@NUM_BOUGHT
:= @NUM_BOUGHT
- LEAST(@NUM_BOUGHT
, Cantidad_entrada
)
el contenido de de @NUM_BOUGHT puede tener dos valores diferentes, y con eso esta otra líea:
podría estar realizando la evaluacion del AND en base a un valor diferente al registro anterior?
Esa es una características de las variables de usuario en MySQL: cada asignación, incluso en la misma SELECT, puede cambiar el valor de la variable.
La verdad es que sin probar con datos reales es difícil saber si esa query realmente funciona bien, más allá de que con algunas pruebas los resultados puedan ser correctos. Como dije, si al menos en un caso no da lo que se espera, entonces el SP está mal.
Posdata:
Usa los highlight para poner el código. Para eso se pusieron, leer todo eso como texto plano es molesto y confuso.