[MSSQL] Select + update actie in een timed job.. Hoe?

Pagina: 1
Acties:

  • Rarz
  • Registratie: Januari 2001
  • Laatst online: 25-08 12:39
:)

Ik ben bezig om een dingetje te bouwen dat verslagen bijhoudt. Op het moment dat een nieuw verslag wordt ingevoerd, heeft de andere partij 14 dagen de tijd om accoord te gaan met het verslag, of om eventueel commentaar toe te voegen.

Na deze 14 dagen, moet een verslag automatisch accoord zijn, en hier zit'm nu de kneep. ASP kan niet timen, dus een thread 14 dagen laten wachten is een beetje veel van het goede..

Dus een job op de SQL2000 server is hier perfect voor. Elke 24 uur checken welke verslagen de 14de dag hebben gehad en nog niet accoord zijn, dacht ik zo.

Probleem is dat ik geen idee heb hoe een loop te bouwen uit puur SQL. De selectie van de velden is niet het problem:

SELECT * FROM fanpage_gespreksverslag WHERE ((DATEDIFF(dd, GETDATE(), DATEADD(yy, DATEDIFF(yy, gesprekDatum, GETDATE()), gesprekDatum)) BETWEEN -14 AND 0) AND gespreksAccoord = null)

Nu moet ik een loopje hebben dat door deze selectle heen cycled en alle gespreksAccoord velden op de huidige datum zet, zodat ze accord zijn.

Ideeen? Gaat dit werken vanuit een job? :)

When in question, when in doubt, run in circles, scream and shout.


  • raptorix
  • Registratie: Februari 2000
  • Laatst online: 17-02-2022
Je kan ook een combo van updat en select doen:

Voorbeeld:

UPDATE fanpage_gespreksverslag
SET gespreksAccoord = 1
WHERE id IN
(SELECT id FROM fanpage_gespreksverslag WHERE ((DATEDIFF(dd, GETDATE(), DATEADD(yy, DATEDIFF(yy, gesprekDatum, GETDATE()), gesprekDatum)) BETWEEN -14 AND 0) AND gespreksAccoord = null))


Weet niet of je dit bedoelt, echte loopjes in sqlserver maak je met een Cursor

Verwijderd

rarzie schreef op 24 oktober 2002 @ 16:12:
Ideeen? Gaat dit werken vanuit een job? :)
Ja, dat kun je idd heel goed doen met een job van de SQL Server Agent... :7

  • cameodski
  • Registratie: Augustus 2002
  • Laatst online: 06-11-2023
rarzie schreef op 24 oktober 2002 @ 16:12:
SELECT * FROM fanpage_gespreksverslag WHERE ((DATEDIFF(dd, GETDATE(), DATEADD(yy, DATEDIFF(yy, gesprekDatum, GETDATE()), gesprekDatum)) BETWEEN -14 AND 0) AND gespreksAccoord = null)
Uiteraard gaat dit werken vanuit een job.
In een job kun je ongeveer alles doen, inclusief het aanroepen van stored procedures als het ingewikkeld wordt.
Maar wat voor vreemde dingen zit je met je datum te doen. En checken of iets NULL is moet ook anders.
De volgende filter zou voldoende moeten zijn:
code:
1
2
WHERE DATEDIFF (day, gesprekDatum, GETDATE()) >= 14
AND gespreksAccoord IS NULL

of als je een index op gespreksAccoord heb:
code:
1
2
WHERE gesprekDatum <= DATEADD (day, -14, GETDATE())
AND gespreksAccoord IS NULL

Erboven kun je inderdaad gewoon de UPDATE zetten (zie voorbeeld raptorix).

Never underestimate the power of


  • Crazy D
  • Registratie: Augustus 2000
  • Laatst online: 28-08 19:27

Crazy D

I think we should take a look.

rarzie schreef op 24 oktober 2002 @ 16:12:
Nu moet ik een loopje hebben dat door deze selectle heen cycled en alle gespreksAccoord velden op de huidige datum zet, zodat ze accord zijn.
Het antwoord is verder al zo'n beetje gegeven, maar kijk eens bij Cursors in je books online (de fm dus :P). Heb je voor dit dus op zich niet nodig maar t kan weleens handig zijn :)

Exact expert nodig?


  • raptorix
  • Registratie: Februari 2000
  • Laatst online: 17-02-2022
raptorix schreef op 24 oktober 2002 @ 16:43:
Weet niet of je dit bedoelt, echte loopjes in sqlserver maak je met een Cursor
Crazy_D schreef op 25 oktober 2002 @ 07:41:
[...]

Het antwoord is verder al zo'n beetje gegeven, maar kijk eens bij Cursors in je books online (de fm dus :P). Heb je voor dit dus op zich niet nodig maar t kan weleens handig zijn :)
Schele :+

  • Crazy D
  • Registratie: Augustus 2000
  • Laatst online: 28-08 19:27

Crazy D

I think we should take a look.

Ik wist wel dat er een reden was waarom ik niet om 7.41 al moet gaan posten 8)7

Exact expert nodig?


  • Rarz
  • Registratie: Januari 2001
  • Laatst online: 25-08 12:39
Bedankt! Erg behulpzaam. (En weer wat geleerd. :)

When in question, when in doubt, run in circles, scream and shout.

Pagina: 1