Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » SQL Server »

problema con un procedimiento almacenado

Estas en el tema de problema con un procedimiento almacenado en el foro de SQL Server en Foros del Web. Hola a to2!!! Necesito crear un procedimiento almacenado que recoja la cantidad de productos de un tipo determinado, y que los vaya sumando, devolviendo finalmente ...
  #1 (permalink)  
Antiguo 07/04/2011, 07:01
 
Fecha de Ingreso: febrero-2009
Mensajes: 56
Antigüedad: 15 años, 3 meses
Puntos: 0
Pregunta problema con un procedimiento almacenado

Hola a to2!!!
Necesito crear un procedimiento almacenado que recoja la cantidad de productos de un tipo determinado, y que los vaya sumando, devolviendo finalmente la cantidad total de productos de ese tipo: ejemplo, si tengo x cantidades de papel largo, x cantidades de papel corto, necesito obtener la cantidad total de papel. El código del procedimiento que hice es el sgte:

CREATE PROCEDURE dbo.spCantidadTotalDeUnProducto

@IDClasificador int,
@CantTotal int OUTPUT

AS
declare @Cant int

DECLARE cTotal CURSOR FOR select intCantidadActual from tbProductos where intIDClasificadorProducto = @IDClasificador

OPEN cTotal

-- Lectura de la primera fila del cursor
FETCH cTotal INTO @Cant

WHILE (@@FETCH_STATUS = 0 )
BEGIN
@CantTotal = @CantTotal + @Cant
-- Lectura de la siguiente fila del cursor
FETCH cTotal INTO @Cant
END

CLOSE cTotal
DEALLOCATE cTotal

return @CantTotal

A la hora de guardar el procedimeitno no me deja, dice que hay problemas de sintaxis cerca de @CantTotal y de CLOSE, Alguien me puede decir que estoy haciendo mal?
Gracias!!!
  #2 (permalink)  
Antiguo 07/04/2011, 08:29
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 4 meses
Puntos: 447
Respuesta: problema con un procedimiento almacenado

Hola taelen... a simple vista no pareciera haber ningún problema, pero en estos momentos no tengo la posibilidad de hacer una prueba en una base de datos. prueba inicializando el valor se tu variable @CantTotal antes de entrar en el while:

Código:
set @CantTotal = 0
WHILE
.....
....
No soy muy partidario de utilizar Cursores, ya que estos pueden afectar en demasía el desempeño del servidor y por lo general siempre hay otras alternativas para obtener los mismos resultados utilizando consultas genéricas... igual y sería conveniente que nos plantearas un poco mejor el problema, incluyendo algunos datos de ejemplo y la estructura de tus tablas, así podríamos ayudarte a buscar alguna solución sin utilizar cursores.

Saludos
Leo
  #3 (permalink)  
Antiguo 07/04/2011, 09:09
 
Fecha de Ingreso: febrero-2009
Mensajes: 56
Antigüedad: 15 años, 3 meses
Puntos: 0
Respuesta: problema con un procedimiento almacenado

Leo!!!
Ya probé inicializando la variable @CantidadTotal en cero, pero me sigue dando el mismo error,
problema de sintaxis cerca de @CantidadTotal en la linea:
@CantTotal = @CantTotal + @Cant
y
problema de sintaxis cerca de @Close en la linea:
CLOSE cTotal
y no tengo la menor idea de que puede estar yendo mal...
  #4 (permalink)  
Antiguo 07/04/2011, 11:46
Avatar de flaviovich  
Fecha de Ingreso: agosto-2005
Ubicación: Lima, Peru
Mensajes: 2.951
Antigüedad: 18 años, 9 meses
Puntos: 39
Respuesta: problema con un procedimiento almacenado

Prueba asi:
Código SQL:
Ver original
  1. CREATE PROCEDURE dbo.spCantidadTotalDeUnProducto
  2. @IDClasificador INT,
  3. @CantTotal INT OUTPUT
  4.  
  5. AS
  6. BEGIN
  7.  
  8. DECLARE @Cant INT
  9.  
  10. DECLARE cTotal CURSOR FOR
  11.     SELECT intCantidadActual
  12.     FROM tbProductos
  13.     WHERE intIDClasificadorProducto = @IDClasificador
  14. FOR READ ONLY
  15.  
  16. OPEN cTotal
  17.  
  18. -- Lectura de la primera fila del cursor
  19. FETCH NEXT FROM cTotal INTO @Cant
  20.  
  21. WHILE @@FETCH_STATUS = 0
  22. BEGIN
  23.     @CantTotal = @CantTotal + @Cant
  24.     -- Lectura de la siguiente fila del cursor
  25.     FETCH NEXT FROM cTotal INTO @Cant
  26. END
  27.  
  28. CLOSE cTotal
  29. DEALLOCATE cTotal
  30.  
  31. END
__________________
No repitamos temas, usemos el Motor de busquedas
Plantea bien tu problema: Ayúdanos a ayudarte.
  #5 (permalink)  
Antiguo 07/04/2011, 12:18
 
Fecha de Ingreso: febrero-2009
Mensajes: 56
Antigüedad: 15 años, 3 meses
Puntos: 0
Respuesta: problema con un procedimiento almacenado

HOla!!!
Así, de esa manera, me sigue dando problemas de sintaxis en la linea
@CantTotal = @CantTotal + @Cant y ahora en ves de dar problemas de sintaxis con close, la da con el ultimo end,
gracias de todas formas!!!
  #6 (permalink)  
Antiguo 07/04/2011, 12:44
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 16 años, 10 meses
Puntos: 180
Respuesta: problema con un procedimiento almacenado

Estas haciendo ????

SET @CantTotal = @CantTotal + @Cant
__________________
MCTS Isaias Islas
  #7 (permalink)  
Antiguo 07/04/2011, 13:09
 
Fecha de Ingreso: febrero-2009
Mensajes: 56
Antigüedad: 15 años, 3 meses
Puntos: 0
Respuesta: problema con un procedimiento almacenado

Eso mismo era, que faltba poner el set a la linea donde le asignaba a la cantidad total una nueva cantidad.
Ya me estaba volviendo loca, Muchas gracias!!!
  #8 (permalink)  
Antiguo 07/04/2011, 16:56
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 16 años, 10 meses
Puntos: 180
Respuesta: problema con un procedimiento almacenado

extraño, porque desde un inicio se hizo la observacion
__________________
MCTS Isaias Islas
  #9 (permalink)  
Antiguo 07/04/2011, 17:08
Avatar de flaviovich  
Fecha de Ingreso: agosto-2005
Ubicación: Lima, Peru
Mensajes: 2.951
Antigüedad: 18 años, 9 meses
Puntos: 39
Respuesta: problema con un procedimiento almacenado

Acaso esto no es mejor que un cursor?
Código SQL:
Ver original
  1. CREATE PROCEDURE dbo.spCantidadTotalDeUnProducto
  2. @IDClasificador INT
  3. AS
  4. SELECT SUM(intCantidadActual)
  5. FROM tbProductos
  6. WHERE intIDClasificadorProducto = @IDClasificador
Y mejor si creas una funcion.
__________________
No repitamos temas, usemos el Motor de busquedas
Plantea bien tu problema: Ayúdanos a ayudarte.
  #10 (permalink)  
Antiguo 08/04/2011, 07:36
 
Fecha de Ingreso: febrero-2009
Mensajes: 56
Antigüedad: 15 años, 3 meses
Puntos: 0
Respuesta: problema con un procedimiento almacenado

Hola Flaviovich!!! Supongo que si, no se, no estoy muy ducha en lo referente a procedimienitos almacenados que no sean los Update, delete o Insert sencillos, y no sabría como recoger desde c#, el valor que recogeria el select, supongo que lo deba preguntar en el foro de .NET o c#. Muchas gracias de todas formas!!!
  #11 (permalink)  
Antiguo 08/04/2011, 08:08
Avatar de flaviovich  
Fecha de Ingreso: agosto-2005
Ubicación: Lima, Peru
Mensajes: 2.951
Antigüedad: 18 años, 9 meses
Puntos: 39
Respuesta: problema con un procedimiento almacenado

Es sencillo, solo necesitas una variable del tipo recordset que tendra una columna y una fila, pero mejor haz la consultas en el foro de programacion.
Suerte!
__________________
No repitamos temas, usemos el Motor de busquedas
Plantea bien tu problema: Ayúdanos a ayudarte.

Etiquetas: procedimiento, almacenar
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 08:01.