ironheadMedlem sedan mars 20011 346 inlägg Hej!
Jag har en SP som ser ut såhär:
CREATE PROCEDURE sFM
(
@fid varchar(100),
@rid varchar(100)
)
AS
BEGIN
DECLARE
@sSQL nvarchar(500)
SET NOCOUNT ON
SET @sSQL = 'INSERT INTO FR (iR,iF) VALUES(''' + @rid +''',''' + @fid + ''')'
print @sSQL
EXEC sp_executesql @sSQL
END
RETURN
Nu skulle jag vilja lägga till, att om en post redan finns i databasen, ska men uppdatera den istället, och finns den inte ska en ny post läggas till...jag har sett att det finns "if not exists" men hur skriver man?
Vill ha typ:
if not exists('SELECT * FROM FR WHERE iR='''+@rid+''' AND iF='''+@fid+'''') Then
' INSERT koden
else
' UPDATE koden
end if
Men hur ska det se ut egentligen?
LarsGMedlem sedan dec. 200012 464 inlägg if not exists(
SELECT *
FROM FR
WHERE iR= @rid
AND iF=@fid)
INSERT INTO FR (iR,iF) VALUES(@rid,@fid)
else
-- UPDATE koden
Det finns ingen anledning att bygga strängar och exekvera dem. Utför kommandona direkt i stället.
Det är inget then eller end if. Om du vill ha flera satser efter en if, använd begin/end
ironheadMedlem sedan mars 20011 346 inlägg 1000 tack Lars!!!
Som en skänk från ovan ;)
btw kan man använda nåt annat kommando annat än EXEC sp_executesql @sSQL för att exekvera SP:s om man nödvändigtvis behöver stränga ihop sql-satser?
@ndersMedlem sedan juni 200032 969 inlägg Det borde gå alldeles utmärkt att använda endast EXEC @sSQL, så gör jag de gånger jag tvingas till det. Jag vet inte om det kanske blir så att sp_ExecuteSQL körs ändå, dock.
Mvh