webForumDet fria alternativet

Problem med stored procedure...

6 svar · 272 visningar · startad av Karin_Parin

Karin_ParinMedlem sedan okt. 200332 inlägg
#1

Hej!
Jag är ny vad gäller SP och skulle behöva lite hjälp.
Har en tabell som lagrar filer som blir nedladdade på en sida. Nu vill jag skriva en SP som uppdaterar tabellen tblFil.
Men om samma fil laddas ner samma dag ska värdet i fältet FilDownload ökas på med ett..
Har försökt genom olika förslag här men ja, I need some help! :l

CREATE PROCEDURE sp_Downloads
(
@P_FilNamn varchar(255),
@P_FilDownload int,
@P_Datum smalldatetime,
@P_SiteID nvarchar(10)
)
AS
BEGIN
DECLARE
@sSQL nvarchar(500)
SET NOCOUNT ON
SET @sSQL = 'INSERT INTO tblFil (FilNamn,Datum,SiteID) 
VALUES(''' + @P_FilNamn +''',''' +@P_ Datum+''',''' +  @P_FilDownload + ''')'

if not exists(
SELECT * 
  FROM tblFil
WHERE FilNamn= @P_FilNamn 

INSERT INTO tblFil (FilNamn) VALUES(@P_FilNamn)
else
UPDATE
INSERT INTO tblFil (FilNamn,FilDownload,Datum,SiteID)
VALUES
(
@P_FilNamn,@P_FilDownload,@P_Datum,@P_SiteID
)
print @sSQL

EXEC sp_executesql @sSQL

GO
END
RETURN
LarsGMedlem sedan dec. 200012 464 inlägg
#2
CREATE PROCEDURE sp_Downloads
(
@P_FilNamn varchar(255),
@P_FilDownload int,
@P_Datum smalldatetime,
@P_SiteID nvarchar(10)
)
AS
set nocount on
if not exists(
SELECT * 
  FROM tblFil
WHERE FilNamn= @P_FilNamn 
  and datediff(day,@p_datum,datum) = 0)
begin
   INSERT INTO tblFil (FilNamn,datum,siteid,filDownload) 
      VALUES(@P_FilNamn,@p_datum,@p_siteid,@P_FilDownload)
else
UPDATE tblFil
  set filDownload = filDownload + 1
 WHERE FilNamn= @P_FilNamn 
  and datediff(day,@p_datum,datum) = 0
Karin_ParinMedlem sedan okt. 200332 inlägg
#3

Tackar! Får dock felmeddelande..är det ngt fel i min tabell kanske eller vad tror du?

Incorrect syntax by the keyword 'else'
Line 22 Incorrect syntax near 0

//Karin

LaspMedlem sedan juli 200012 980 inlägg
#4

End

Karin_ParinMedlem sedan okt. 200332 inlägg
#5

Aha! - Pling!
Men det blev ändå..
Incorrect syntax by the keyword 'else'

LarsGMedlem sedan dec. 200012 464 inlägg
#6

Jag missade ett end som matchar det begin som finns efter if

CREATE PROCEDURE sp_Downloads
(
@P_FilNamn varchar(255),
@P_FilDownload int,
@P_Datum smalldatetime,
@P_SiteID nvarchar(10)
)
AS
set nocount on
if not exists(
SELECT * 
  FROM tblFil
WHERE FilNamn= @P_FilNamn 
  and datediff(day,@p_datum,datum) = 0)
begin
   INSERT INTO tblFil (FilNamn,datum,siteid,filDownload) 
      VALUES(@P_FilNamn,@p_datum,@p_siteid,@P_FilDownload)
end
else
begin
UPDATE tblFil
  set filDownload = filDownload + 1
 WHERE FilNamn= @P_FilNamn 
  and datediff(day,@p_datum,datum) = 0
end

Om man enbart har ett statement efter if så behövs det inget begin end men det skadar inte.

Karin_ParinMedlem sedan okt. 200332 inlägg
#7

Ok, kanon! Tackar!

134 ms totalt · 3 externa anrop · v20260731065814-full.30151723
130 ms — hämta forumlista (db)
0 ms — hämta statistik (cache)
129 ms — hämta tråd, inlägg och bilagor (db)