Avatar billede opcm_ip Nybegynder
05. september 2007 - 09:24 Der er 3 kommentarer og
1 løsning

Incorrect syntax near the keyword 'CASE'

Får denne fejl næsten uanset hvad jeg har prøvet "Incorrect syntax near the keyword 'CASE'"

Any clue...any one?

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[pOpskrivRykkerfrist]
    @dagsdato datetime,
    @nyrykkerfrist datetime,
    @blanketnummer int,
    @guid uniqueidentifier,
    @rykkerfrist int
AS
BEGIN
    DECLARE @rykkernummer int
    SET @rykkernummer = (SELECT COUNT(BlanketnummerOriginal) FROM tBlanketRykker WHERE BlanketnummerOriginal=@blanketnummer)

    IF(rykkernummer>0)   
        BEGIN
            UPDATE tRykkerData
                CASE @rykkernummer
                    WHEN 1 THEN SET tRykkerData.Rykker1Dato=@dagsdato, tRykkerData,Udløbsdato=@nyrykkerfrist
                    WHEN 2 THEN SET tRykkerData.Rykker2Dato=@dagsdato, tRykkerData,Udløbsdato=@nyrykkerfrist
                END
            FROM tRykkerData
            INNER JOIN tDHS ON tRykkerData.RykkerIndex = tDHS.RykkerIndex
            WHERE tDHS.Guid = @guid
        END
END
Avatar billede lorentsnv Nybegynder
05. september 2007 - 09:55 #1
Jeg tror ikke du kan bruge en Case som du gør det i din Update. I dit tilfælde skal du nok heller bruge if:


SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[pOpskrivRykkerfrist]
    @dagsdato datetime,
    @nyrykkerfrist datetime,
    @blanketnummer int,
    @guid uniqueidentifier,
    @rykkerfrist int
AS
BEGIN
    DECLARE @rykkernummer int
    SET @rykkernummer = (SELECT COUNT(BlanketnummerOriginal) FROM tBlanketRykker WHERE BlanketnummerOriginal=@blanketnummer)

    IF(rykkernummer=1)   
        BEGIN
            UPDATE tRykkerData
                SET tRykkerData.Rykker1Dato=@dagsdato
          , tRykkerData,Udløbsdato=@nyrykkerfrist
            FROM tRykkerData
            INNER JOIN tDHS ON tRykkerData.RykkerIndex = tDHS.RykkerIndex
            WHERE tDHS.Guid = @guid
        END
    IF(rykkernummer=2)   
        BEGIN
            UPDATE tRykkerData
                SET tRykkerData.Rykker2Dato=@dagsdato
          , tRykkerData,Udløbsdato=@nyrykkerfrist
            FROM tRykkerData
            INNER JOIN tDHS ON tRykkerData.RykkerIndex = tDHS.RykkerIndex
            WHERE tDHS.Guid = @guid
        END
END
Avatar billede bennytordrup Nybegynder
05. september 2007 - 10:00 #2
UPDATE tRykkerData
SET
    tRykkerData.Rykker1Dato = case @Rykkernummer when 1 then @Dagsdato else tRykkerData.rykker1dato end,
    tRykkerData.Rykker2Dato = case @Rykkernummer when 2 then @Dagsdato else tRykkerData.Rykker2Dato end,
    Udløbsdato=@nyrykkerfrist
            FROM tRykkerData
            INNER JOIN tDHS ON tRykkerData.RykkerIndex = tDHS.RykkerIndex
            WHERE tDHS.Guid = @guid
Avatar billede opcm_ip Nybegynder
05. september 2007 - 10:05 #3
Elegant, Tak!
Avatar billede bennytordrup Nybegynder
05. september 2007 - 10:50 #4
Hvilken løsning bruger du? Min eller Lorentsnv? Husk at lukke spørgsmålet, når du har fået løsningen.
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