Avatar billede karsten_larsen Praktikant
22. august 2006 - 14:30 Der er 7 kommentarer og
2 løsninger

lave if sætning i storeprocedure

Er det muligt at lave knytte en if statement i en storeprocedure idenne stil eller hvordan er syntax for det

Select status from database where UserID = 99

If status = "on" then
  Updata Status = [ON] WHERE (UserID = 99)
end if

og modsat.

?karsten_larsen
Avatar billede lorentsnv Nybegynder
22. august 2006 - 14:37 #1
Noget i retning af:

Declare @Status

Select @Status = status from database where UserID = 99

If @Status = "on" then
  Updata MinTable
  Set Status = [ON] WHERE (UserID = 99)
end if
Avatar billede dr_chaos Nybegynder
22. august 2006 - 14:38 #2
if (status = 'on')
BEGIN
UPDATE tabel set Status='ON' WHERE UserID=99
END
else if(status='off')
if (status = "on)
BEGIN
UPDATE tabel set Status='off' WHERE UserID=99
END
Avatar billede lorentsnv Nybegynder
22. august 2006 - 14:40 #3
Ovenstående er kun effektivt hvis du kun har en eller nogle få UserID du skal opdatere. Hvis der skla opdateres for mange UserID's samtidig, ville jeg skrevet sp'en om.
Avatar billede karsten_larsen Praktikant
22. august 2006 - 15:59 #4
okay - jeg prøver det lige af.

lorentsny -> hvad mener du, hvorfor er sp´en ikke god i forhold til flere users? Jeg bruger sp´en i en class (.Net), så antallet kan jo bare komme med som en parameter.

:-) karsten_larsen
Avatar billede karsten_larsen Praktikant
22. august 2006 - 22:19 #5
Tak for hjælpen begge - jeg brugte lidt fra begge svar - så smid et svar begge
:-) karsten_larsen

Løsningen blev:
Declare @Status varchar(3)
SELECT @Status = User_Status FROM DB WHERE User_ID = @UserId


If @Status = 'On'
        BEGIN   
        UPDATE
          DB
        SET
            User_Status = 'Off'
        WHERE
            Net_Neopir_User.User_ID = @UserId
        END



If @Status = 'Off'
        BEGIN   
        UPDATE
          DB
        SET
            User_Status = 'On'
        WHERE
            User_ID = @UserId
        END

en anden løsning som jeg også var forbi er:

If  (SELECT count(User_Status) FROM DB WHERE User_ID = @UserId AND User_Status = 'Off' ) = 1
        BEGIN   
        UPDATE
          DB
        SET
            User_Status = 'On'
        WHERE
            User_ID = @UserId
        END
ELSE
        BEGIN   
        UPDATE
          DB
        SET
            User_Status = 'Off'
        WHERE
            User_ID = @UserId
        END
Avatar billede lorentsnv Nybegynder
22. august 2006 - 22:23 #6
:-)
Avatar billede dr_chaos Nybegynder
23. august 2006 - 06:01 #7
svar :)
Avatar billede dr_chaos Nybegynder
23. august 2006 - 06:01 #8
lorentsnv husk svar :)
Avatar billede lorentsnv Nybegynder
23. august 2006 - 09:29 #9
Så kommer der et 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