---
title: "SP nästlade if-satser?"
type: "forum-thread"
url: "https://www.webforum.nu/amne/databaser-sql/115083-sp-nästlade-if-satser"
topic: "Databaser & SQL"
topic_url: "https://www.webforum.nu/amne/databaser-sql"
author: "ironhead"
published: "2004-11-04T12:16:17.000Z"
updated: "2004-11-04T13:09:51.000Z"
replies: 6
views: 634
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/115083-sp-nästlade-if-satser"
---

# SP nästlade if-satser?

## #1 — ironhead, 2004-11-04T12:16Z

Hej!

behöver hjälp med denna SP:

CREATE PROCEDURE ...
(
...
)
AS
BEGIN

SET NOCOUNT ON

if exists(SELECT....)
if \<fält\> = 0
UPDATE RecipeRate SET Rate=@sRate WHERE UserID=@suser and RecipeID=@sRecipeID
else
INSERT INTO RecipeRate (UserID,RecipeID,Rate) VALUES(@suser,@sRecipeID,@sRate)

END
RETURN

Jag vill att om post finns men ett viss fält är noll (0) (den röda texten)  då ska updatesatsen köras annars en INSERT

går det att kolla värde i fältet direkt i SP eller måste jag lägga värdet i en variabel och sedan använda det?

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

## #2 — andreas_lindh, 2004-11-04T12:18Z

```
if (select fält from tabell) = 0
```

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

## #3 — ironhead, 2004-11-04T12:26Z

Fint! :) Nu ser den ut såhär:

CREATE PROCEDURE ...
(
...
)
AS
BEGIN

SET NOCOUNT ON

if exists(SELECT....)
if (select fält from tabell) = 0
UPDATE RecipeRate SET Rate=@sRate WHERE UserID=@suser and RecipeID=@sRecipeID
else
INSERT INTO RecipeRate (UserID,RecipeID,Rate) VALUES(@suser,@sRecipeID,@sRate)

END
RETURN

Kommer min if-satser att funka korrekt nudå?

att om posten finns och fält = 0 då uppdaterar vi
att om posten inte finns då blir det en INSERT
?

kommer inte andra if-satsen att "ta över" else?

eller är det bättre att göra såhär:

CREATE PROCEDURE ...
(
...
)
AS
BEGIN

SET NOCOUNT ON

if exists(SELECT....)
if (select fält from tabell) = 0
UPDATE RecipeRate SET Rate=@sRate WHERE UserID=@suser and RecipeID=@sRecipeID

if not exists(SELECT....)
INSERT INTO RecipeRate (UserID,RecipeID,Rate) VALUES(@suser,@sRecipeID,@sRate)

END
RETURN

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

## #4 — ironhead, 2004-11-04T12:45Z

Drog till med det andra alternativet...funkar kanon...tack! :)

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

## #5 — LarsG, 2004-11-04T12:58Z

```
if (select fält from tabell) = 0
```

är inte bra om det finns mer än 1 post i tabellen. Använd if exists

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

## #6 — ironhead, 2004-11-04T13:03Z

> **LarsG skrev:**
>
> ```
> if (select fält from tabell) = 0
> ```
>
> 
> 
> är inte bra om det finns mer än 1 post i tabellen. Använd if exists

Jag körde:

if (select fält from tabell WHERE fält1=@tjo AND fält2=@tjim) = 0

..är det ändå bättre att köra exists?

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

## #7 — LarsG, 2004-11-04T13:09Z

Ja.

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

---

Tråden på webben: https://www.webforum.nu/amne/databaser-sql/115083-sp-nästlade-if-satser
