---
title: "stored procedure & if"
type: "forum-thread"
url: "https://www.webforum.nu/amne/databaser-sql/87759-stored-procedure-if"
topic: "Databaser & SQL"
topic_url: "https://www.webforum.nu/amne/databaser-sql"
author: "ironhead"
published: "2003-10-05T16:47:46.000Z"
updated: "2003-10-05T19:34:46.000Z"
replies: 4
views: 276
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/databaser-sql/87759-stored-procedure-if"
---

# stored procedure & if

## #1 — ironhead, 2003-10-05T16:47Z

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?

Permalänk: https://www.webforum.nu/p/87759

## #2 — LarsG, 2003-10-05T16:54Z

```
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

Permalänk: https://www.webforum.nu/p/1178124

## #3 — ironhead, 2003-10-05T18:17Z

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?

Permalänk: https://www.webforum.nu/p/1178184

## #4 — @nders, 2003-10-05T18:53Z

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

Permalänk: https://www.webforum.nu/p/1178210

## #5 — ironhead, 2003-10-05T19:34Z

oki...Tack!

Permalänk: https://www.webforum.nu/p/1178244

---

Tråden på webben: https://www.webforum.nu/amne/databaser-sql/87759-stored-procedure-if
