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

Ayuda con consulta en JOB

Estas en el tema de Ayuda con consulta en JOB en el foro de SQL Server en Foros del Web. Saludos a todos, Necesito colocar una consulta de la siguiente manera en un job.. Consulta 1) Select cantidad,usuario from pagos where fecha='GetDate()' despues de eso ...
  #1 (permalink)  
Antiguo 01/04/2009, 09:05
 
Fecha de Ingreso: junio-2006
Mensajes: 61
Antigüedad: 17 años, 10 meses
Puntos: 2
Pregunta Ayuda con consulta en JOB

Saludos a todos,

Necesito colocar una consulta de la siguiente manera en un job..

Consulta 1)

Select cantidad,usuario from pagos where fecha='GetDate()'

despues de eso para cada registro que arroje esa consulta hacer esto.


Consulta 2)

update usuarios set saldo=saldo+cantidad where usuario=usuario;

donde cantidad y usuario es la recogida en la consulta 1. (como una especie de ciclo)

Gracias de antemano.
  #2 (permalink)  
Antiguo 01/04/2009, 10:12
Avatar de flaviovich  
Fecha de Ingreso: agosto-2005
Ubicación: Lima, Peru
Mensajes: 2.951
Antigüedad: 18 años, 8 meses
Puntos: 39
Respuesta: Ayuda con consulta en JOB

Hola!
En el primer paso no puedes poner la funcion getdate() entre comillas simples, eso es para cadenas.
Siguiendo tu logica, podrias usar un cursor, pero seria mejor usar una subconsulta en el update.
Cual eliges?
__________________
No repitamos temas, usemos el Motor de busquedas
Plantea bien tu problema: Ayúdanos a ayudarte.
  #3 (permalink)  
Antiguo 01/04/2009, 10:36
 
Fecha de Ingreso: junio-2006
Mensajes: 61
Antigüedad: 17 años, 10 meses
Puntos: 2
Pregunta Respuesta: Ayuda con consulta en JOB

hola,

por lo del getdate era solo un ejemplo =)...

y prefiero tu ayuda en el cursor...porque se me olvido decir que aparte de actualizar el saldo del usuario tambien me toca insertar un log y hacer otras consultas que tienen ese id y cantidad de la consulta 1.

Gracias.
  #4 (permalink)  
Antiguo 01/04/2009, 11:42
Avatar de flaviovich  
Fecha de Ingreso: agosto-2005
Ubicación: Lima, Peru
Mensajes: 2.951
Antigüedad: 18 años, 8 meses
Puntos: 39
Respuesta: Ayuda con consulta en JOB

Código sql:
Ver original
  1. DECLARE @cantidad INT
  2. DECLARE @usuario VARCHAR(10)
  3.      
  4. DECLARE cr_UsrCant CURSOR FOR
  5.     SELECT cantidad,usuario FROM pagos WHERE fecha=GetDate()
  6. FOR READ ONLY
  7.  
  8. OPEN cr_UsrCant
  9. FETCH NEXT FROM cr_UsrCant INTO @cantidad, @usuario
  10.  
  11. WHILE @@FETCH_STATUS = 0
  12. BEGIN
  13.     UPDATE usuarios SET saldo=saldo+@cantidad WHERE usuario=@usuario
  14.     FETCH NEXT FROM cr_UsrCant INTO @cantidad, @usuario
  15. END
  16.  
  17. CLOSE cr_UsrCant
  18. DEALLOCATE cr_UsrCant
Facil no?
Si no entiendes, te recomiendo leer sobre los cursores en los Libros en linea.
Suerte!
__________________
No repitamos temas, usemos el Motor de busquedas
Plantea bien tu problema: Ayúdanos a ayudarte.
  #5 (permalink)  
Antiguo 01/04/2009, 23:41
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 16 años, 9 meses
Puntos: 180
Respuesta: Ayuda con consulta en JOB

Dudo mucho, que la comparacion fecha=GetDate(), funcione correctamente, a menos de que realmente existan fechas IGUALITAS tomando, minutos y segundos, olvidense del año, mes y dia.
  #6 (permalink)  
Antiguo 02/04/2009, 05:23
 
Fecha de Ingreso: febrero-2009
Mensajes: 312
Antigüedad: 15 años, 2 meses
Puntos: 4
Respuesta: Ayuda con consulta en JOB

Cita:
Iniciado por iislas Ver Mensaje
Dudo mucho, que la comparacion fecha=GetDate(), funcione correctamente, a menos de que realmente existan fechas IGUALITAS tomando, minutos y segundos, olvidense del año, mes y dia.

Efectivamente, hay que pasarlos a int en segundos. Este problema pasa mucho en aplicaciones que guardan fechas teniendo en cuenta minutos y segundos.

Saludos
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 11:02.