Ver Mensaje Individual
  #14 (permalink)  
Antiguo 08/06/2015, 12:33
Avatar de Libras
Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 18 años, 4 meses
Puntos: 774
Respuesta: recorrer tabla con while/for/fetch o algo

un pequeño error, cuando creas una tabla temporal esta queda en "memoria" hasta que se cierra la sesion que la invoco, por lo que si quieres correr de nuevo tu codigo tienes que dropear la tabla en cuestion, para evitar eso puedes dejar tu codigo asi:

Código SQL:
Ver original
  1. DECLARE @nombre VARCHAR(MAX)
  2. DECLARE @id INT
  3. DECLARE @fecha DATE
  4. DECLARE @x INT
  5. DECLARE @Mensaje VARCHAR(MAX)
  6. SET @fecha = CONVERT(CHAR(10),getdate(),126)
  7. SET @x=1
  8.  
  9. IF OBJECT_ID('tempdb..#temp') IS NOT NULL
  10.     DROP TABLE #temp
  11.  
  12. SELECT *, IDENTITY(INT,1,1) AS rn INTO #temp FROM ProximoService WHERE FechaService=@fecha
  13.  
  14. while @x <= (SELECT COUNT(*) FROM #temp)
  15. BEGIN
  16. SELECT @nombre=Cliente,@id=UnidadEntregadaID FROM #temp WHERE rn=@x
  17. SELECT @Mensaje = 'Proximo Service: ' + CHAR(13) + CHAR(10) + CHAR(13) + CHAR(10) +
  18. 'Cliente: ' + @nombre + CHAR(13) + CHAR(10) + CHAR(13) + CHAR(10) +
  19. 'ID Entregada: ' + @id
  20. EXEC msdb.dbo.sp_send_dbmail @profile_name='Profile de prueba',
  21. @recipients = "[email protected]",
  22. @subject = "Fecha Service",
  23. @body = @Mensaje
  24.  
  25. UPDATE ProximoService
  26. SET FechaService=DATEADD(DAY,10,FechaService)
  27. WHERE UnidadEntregadaID=@id
  28.  
  29.  
  30. SET @x=@x+1
  31. END
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me