Devolver Valor en SP con Cursor
Publicado por Ramiro Benavides (6 intervenciones) el 13/03/2009 06:44:10
Hola amigos:
Soy nuevo en esto de cursores. Resulta que necesito hacer una serie de calculos basados en la lectura de filas y que estos me devuelvan el resultado. Cuando ejecuto el SP del ejemplo @pStock y @pMovimientos aparecen en NULL. y quiero saber porqueee, ya que existen datos en la tabla.
Obviamente el ejemplo de abajo podria solucionarse sin usar cursores. Pero por favor necesito hacerlo con cursores ya que estos calculos son solo una muestra ya que hay unas formulas muchisimo mas complicadas que hacer por cada fila.
Lo que necesito es que me devuelvan valores en @pStock y @pMovimientos.
QUE ESTOY HACIENDO MAL?
CREATE PROCEDURE ea_EstadoKardex(
@pIdArticulo udtIdString20,
@pFechaTope udtAnyDate,
@pStock udtFloat OUTPUT,
@pMovimientos udtBigInteger OUTPUT)
AS
DECLARE @vIdArticulo udtIdString20
DECLARE @vFecha udtAnyDate
DECLARE @vFactor udtFloat
DECLARE curKardex SCROLL CURSOR FOR SELECT IdArticulo, Fecha, Factor FROM ea_Movimiento WHERE (IdArticulo=@pIdArticulo) ORDER BY Fecha
OPEN curKardex
FETCH FIRST FROM curKardex INTO @vIdArticulo, @vFecha, @vFactor
WHILE @@FETCH_STATUS =0 BEGIN
SET @vStock=@vStock+@vFactor
SET @pMovimientos=@pMovimientos+1
FETCH NEXT FROM curKardex INTO @vIdArticulo, @vFecha, @vFactor
END
SET @pStock=@vStock
CLOSE curKardex
DEALLOCATE curKardex
GO
Gracias de antemano
Soy nuevo en esto de cursores. Resulta que necesito hacer una serie de calculos basados en la lectura de filas y que estos me devuelvan el resultado. Cuando ejecuto el SP del ejemplo @pStock y @pMovimientos aparecen en NULL. y quiero saber porqueee, ya que existen datos en la tabla.
Obviamente el ejemplo de abajo podria solucionarse sin usar cursores. Pero por favor necesito hacerlo con cursores ya que estos calculos son solo una muestra ya que hay unas formulas muchisimo mas complicadas que hacer por cada fila.
Lo que necesito es que me devuelvan valores en @pStock y @pMovimientos.
QUE ESTOY HACIENDO MAL?
CREATE PROCEDURE ea_EstadoKardex(
@pIdArticulo udtIdString20,
@pFechaTope udtAnyDate,
@pStock udtFloat OUTPUT,
@pMovimientos udtBigInteger OUTPUT)
AS
DECLARE @vIdArticulo udtIdString20
DECLARE @vFecha udtAnyDate
DECLARE @vFactor udtFloat
DECLARE curKardex SCROLL CURSOR FOR SELECT IdArticulo, Fecha, Factor FROM ea_Movimiento WHERE (IdArticulo=@pIdArticulo) ORDER BY Fecha
OPEN curKardex
FETCH FIRST FROM curKardex INTO @vIdArticulo, @vFecha, @vFactor
WHILE @@FETCH_STATUS =0 BEGIN
SET @vStock=@vStock+@vFactor
SET @pMovimientos=@pMovimientos+1
FETCH NEXT FROM curKardex INTO @vIdArticulo, @vFecha, @vFactor
END
SET @pStock=@vStock
CLOSE curKardex
DEALLOCATE curKardex
GO
Gracias de antemano
Valora esta pregunta


0