MySQL Forums
Forum List  »  Spanish

Cursor con IF
Posted by: Leandro Lopez
Date: September 17, 2016 08:26AM

Hola a Todos. Necesitaría si alguien me puede sugerir como poder crear una función que contenga un cursor el cual se llene con un select diferente en función de un parámetro. Los dos select va a ser iguales los que va a variar es el where del select, que va a cambiar en función de un parámetro.

Les dejo un ejemplo.

FUNCTION `function_stk_articulo_area`(aIdArt INT, aIdMedida INT, aNroMedida VARCHAR(20), aIdSuc INT, aIdDeposito INT, aIdArea INT) RETURNS decimal(10,3)

BEGIN

-- Definición de la consulta
DECLARE cursor_movimientos CURSOR FOR
IF aIdMedida = 0 THEN
SELECT
stkmovimientos.CantMovim,
stkconcep.SumRes,
stkconcep.DeCierre
FROM
stkmovimientos
INNER JOIN stkconcep ON
(stkmovimientos.IdConcepto = stkconcep.`Id`)
WHERE
stkmovimientos.IdSucursal = aIdSuc AND
stkmovimientos.IdDeposito = aIdDeposito AND
stkmovimientos.IdArea = aIdArea AND
stkmovimientos.IdTpoProducto = 0 AND
stkmovimientos.IdProducto = aIdArt
ORDER BY
stkmovimientos.IdSucursal,
stkmovimientos.IdDeposito,
stkmovimientos.IdArea,
stkmovimientos.FecMovim,
stkmovimientos.Id,
stkmovimientos.Sec;
ELSE
SELECT
stkmovimientos.CantMovim,
stkconcep.SumRes,
stkconcep.DeCierre
FROM
stkmovimientos
INNER JOIN stkconcep ON
(stkmovimientos.IdConcepto = stkconcep.`Id`)
WHERE
stkmovimientos.IdSucursal = aIdSuc AND
stkmovimientos.IdDeposito = aIdDeposito AND
stkmovimientos.IdArea = aIdArea AND
stkmovimientos.IdTpoProducto = 0 AND
stkmovimientos.IdProducto = aIdArt AND
stkmovimientos.IdMedida = aIdMedida AND
stkmovimientos.NroMedida = aNroMedia
ORDER BY
stkmovimientos.IdSucursal,
stkmovimientos.IdDeposito,
stkmovimientos.IdArea,
stkmovimientos.FecMovim,
stkmovimientos.IdMedida,
stkmovimientos.NroMedida,
stkmovimientos.Id,
stkmovimientos.Sec;
ENDIF;

Este es el ejemplo de lo que yo estoy tratando de lograr. Si alguien puede sugerirme como poder hacer esto o una alternativa diferente se los voy a agradecer.

Saludos

Options: ReplyQuote


Subject
Views
Written By
Posted
Cursor con IF
1056
September 17, 2016 08:26AM


Sorry, you can't reply to this topic. It has been closed.

Content reproduced on this site is the property of the respective copyright holders. It is not reviewed in advance by Oracle and does not necessarily represent the opinion of Oracle or any other party.