Avatar billede mydream Nybegynder
30. januar 2007 - 09:34 Der er 9 kommentarer og
1 løsning

Stored procedure

Jeg skal have lavet en stored procedure, som kan håndtere voting.

Jeg kalder proceduren med 2 variable, et brugerid og et stemmeid.

Derefter skal proceduren slå op i tabel RATINGS for at se om brugeren allerede har stemt 3 gange (som er max antal stemmer). Hvis brugeren stadig har stemmer tilgode skal RATINGS opdateres med en ny række med brugerideet og stemmeideet.

Noget i denne stil skrevet i asp:


function Stem (BID,SID)
sql = "select count(*) as antal from Ratings where BID = "&BID
set Record = DB.Execute(sql)

if Record("antal") < 3 then
sql2 = "update Ratings set BID="&BID&" and SID="&SID
DB.Execute(sql2)
else
response.write "Du har allerede stemt 3 gange"
end if

end function

----------------------

Men hvordan skriver jeg det i en stored procedure?
Avatar billede dr_chaos Nybegynder
30. januar 2007 - 14:18 #1
CREATE PROCEDURE Voting
@BID Int,
@SID int
AS
BEGIN
if((select count(*) as antal from Ratings where BID =@BID)<3)
BEGIN
update Ratings set BID=@BID and SID=@SID
END
END
Avatar billede dr_chaos Nybegynder
30. januar 2007 - 14:18 #2
Men den giver ingen mening.
Skal du ikke lave en insert i stedet for en update
Avatar billede mydream Nybegynder
30. januar 2007 - 14:27 #3
Tak for den. Jeg tester den med det samme.

HAHA jo det skal det da være. Jeg var ikke helt vågen da jeg skrev eksemplet. :)
Avatar billede dr_chaos Nybegynder
30. januar 2007 - 14:36 #4
hehe
Noget i denne stil :
INSERT INTO Ratings (BID,SID)
SELECT @BID,@SID
Avatar billede mydream Nybegynder
30. januar 2007 - 15:25 #5
Det virker fint. Lægger du et svar?
Avatar billede dr_chaos Nybegynder
30. januar 2007 - 16:32 #6
gerne :)
Avatar billede mydream Nybegynder
30. januar 2007 - 19:09 #7
Jeg kom til at tænke på at det ville være rart hvis proceduren returnerede en besked, hvis der allerede var stemt 3 gange.

Hvordan skriver jeg det ind i proceduren, og hvordan får jeg beskeden ud i asp?
Avatar billede dr_chaos Nybegynder
30. januar 2007 - 19:12 #8
CREATE PROCEDURE Voting
@BID Int,
@SID int,
@msg varchar(255) output
AS
BEGIN
if((select count(*) as antal from Ratings where BID =@BID)<3)
BEGIN
update Ratings set BID=@BID and SID=@SID
SET @msg='Din stemme er gemt'
END
ELSE
BEGIN
SET @msg='Du har allerede stemt 3 gange'
END

END
Avatar billede dr_chaos Nybegynder
30. januar 2007 - 19:12 #9
du skal definerer et output parameter i asp.
Avatar billede mydream Nybegynder
30. januar 2007 - 19:29 #10
Ved en normal sql query er mit output jo en række. Hvordan skal jeg gøre det med en variabel fra en stored procedure?

set Record=DB.Execute(sql)
response.write Record("msg")
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