Avatar billede meltinis Nybegynder
10. juni 2006 - 14:23 Der er 7 kommentarer og
1 løsning

Bruge variabel fundet i samme Stored Procedure

Jeg kalder en stored procedure og laver et resultset (hvis det hedder det allerede inde i SP) og hvis den finder noget skal jeg bruge værdierne til det næste kald:

Declare @tempid int

SELECT userid, email, regdate, changedate, lastlogin, accesslevel FROM [user]
WHERE username = @username AND password = @password

--@tempid = [HVAD SKAL DER STÅ HER???]

IF @tempid IS NOT NULL
        UPDATE [user] SET lastlogin = getdate()
        WHERE userid = @tempid

Hvordan får jeg userid-værdien over i @tempid?
Avatar billede dr_chaos Nybegynder
10. juni 2006 - 14:32 #1
noget i denne stil :

SELECT @tempid = userid,userid, email, regdate, changedate, lastlogin, accesslevel FROM [user]
WHERE username = @username AND password = @password

--@tempid = [HVAD SKAL DER STÅ HER???]

IF @tempid IS NOT NULL
        UPDATE [user] SET lastlogin = getdate()
        WHERE userid = @tempid
Avatar billede meltinis Nybegynder
10. juni 2006 - 14:36 #2
Ja, den prøvede jeg også (i en lidt anden version), men får fejlmed. "A SELECT statement that assigns a value to a variable must not be combined with data-retrieval operations."
Avatar billede dr_chaos Nybegynder
10. juni 2006 - 14:39 #3
hvis du ikke har mere i din sp kan du benytte:
SELECT @tempid = userid FROM [user]
WHERE username = @username AND password = @password

--@tempid = [HVAD SKAL DER STÅ HER???]

IF @tempid IS NOT NULL
        UPDATE [user] SET lastlogin = getdate()
        WHERE userid = @tempid
Avatar billede meltinis Nybegynder
10. juni 2006 - 14:49 #4
Fantastisk - men hvordan får sendt min query tilbage som resultset? Ligenu sender den nemlig ikke noget...
Avatar billede dr_chaos Nybegynder
10. juni 2006 - 14:52 #5
SELECT @tempid = userid FROM [user]
WHERE username = @username AND password = @password

--@tempid = [HVAD SKAL DER STÅ HER???]

IF @tempid IS NOT NULL
BEGIN
        UPDATE [user] SET lastlogin = getdate()
        WHERE userid = @tempid
SELECT userid,userid, email, regdate, changedate, lastlogin, accesslevel FROM [user]
WHERE username = @username AND password = @password
END
Avatar billede dr_chaos Nybegynder
10. juni 2006 - 14:52 #6
eller også skal du returnerer parametre.
Avatar billede meltinis Nybegynder
10. juni 2006 - 14:59 #7
ahh... jeg rykkede det lidt rundt så det passer - næsten som dit:
    SELECT @tempid = userid FROM [user]
    WHERE username = @username AND password = @password

    SELECT userid, email, regdate, changedate, lastlogin, accesslevel FROM [user]
    WHERE username = @username AND password = @password
   
    IF @tempid IS NOT NULL
        UPDATE [user] SET lastlogin = getdate()
        WHERE userid = @tempid

Her returnerer den det jeg har brug for... takker for hjælpen - Smidder du et svar?
Avatar billede dr_chaos Nybegynder
10. juni 2006 - 15:00 #8
np 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