Avatar billede simsen Mester
24. november 2009 - 00:22 Der er 6 kommentarer og
1 løsning

Gå gennem tabel (loop)

Hej,

Det jeg forsøger at ville gøre: At gå gennem en tabel, for at checke om dags dato er større end dags dato - her er det ikke datoen men mere om den er 10 minutter større end den dato, der er sat. Hvis den er 10 minutter mere end den satte dato og tid, skal den ændre en bit fra true til false....

Min kode indtil videre:

BEGIN
        SET NOCOUNT ON

    DECLARE @moviePId int
    DECLARE @Count int
    Set @Count = 1

    DECLARE Cursor1 CURSOR FOR
    SELECT moviePId, movieViewNow, movieViewDate FROM Movies

    OPEN Cursor1

    FETCH NEXT FROM Cursor1
    INTO @moviePId, movieViewNow

    WHILE @@FETCH_STATUS = 0
    BEGIN

        UPDATE Movies SET movieViewNow = 0 WHERE moviePId = @moviePId

    FETCH NEXT FROM Cursor1
    INTO @moviePId
    Set @Count = @Count + 1

    END

    CLOSE Cursor1
    DEALLOCATE Cursor1
    END

Men den fejler og siger der er en fejl ved movieViewNow - men ikke hvad fejlen er.....

En anden lille bi-ting........Når jeg har oprettet proceduren....så kan jeg ikke se den i under oprettede procedurer......Hvor ligger den den slags henne? (Lige nu skriver jeg den igennem Visual Studio og tester den så også den vej igennem, fordi jeg ikke kan finde l.....)

mvh
simsen :-)
Avatar billede arne_v Ekspert
24. november 2009 - 00:58 #1
1)

Der må være nogle syntax fejl.

    SELECT moviePId, movieViewNow, movieViewDate FROM Movies

har 3 felter

    FETCH NEXT FROM Cursor1
    INTO @moviePId, movieViewNow

har 2 felter

    FETCH NEXT FROM Cursor1
    INTO @moviePId

har 1 felt
Avatar billede arne_v Ekspert
24. november 2009 - 00:58 #2
Hvad laver al den SQL som:

UPDATE Movies SET movieViewNow = 0

ikke gør ?
Avatar billede simsen Mester
24. november 2009 - 13:03 #3
arne

Nu spørger du om ting, jeg ikke aner noget om - jeg har fundet eksemplet her på eksperten og gået udfra den....

Det eneste jeg vil er at update Movies og sætte movieViewNow til at være false når datoen (movieViewDate) er mindre end 5 minutter efter datetime.now

Altså:
Kl. er nu 12.58 - så skal den sætte alle rækker, der er 12.52 eller mindre.
Avatar billede arne_v Ekspert
24. november 2009 - 14:28 #4
Det behoever du ikke en cursor til.

En simpel UPDATE maa vaere nok.
Avatar billede arne_v Ekspert
24. november 2009 - 14:30 #5
UPDATE movies SET movieviewnow=0 WHERE moveiviewdate < DATEADD(MI,5,GETDATE())
Avatar billede simsen Mester
24. november 2009 - 17:48 #6
arne

Tak du er som vanligt en engel, når jeg vil gøre ting for besværligt for mig selv.....

Smid et svar og tak for hjælpen :-)
Avatar billede arne_v Ekspert
24. november 2009 - 18:14 #7
svar
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester