---
title: "T-SQL"
type: "forum-thread"
url: "https://www.webforum.nu/amne/databaser-sql/155438-t-sql"
topic: "Databaser & SQL"
topic_url: "https://www.webforum.nu/amne/databaser-sql"
author: "clarkbones"
published: "2006-12-31T16:41:22.000Z"
updated: "2007-01-02T18:20:49.000Z"
replies: 3
views: 344
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/155438-t-sql"
---

# T-SQL

## #1 — clarkbones, 2006-12-31T16:41Z

Hej!

Har en sp som hämtar alla kursdeltagare. Typ

SELECT \* FROM KURSDELTAGARE

Nu vill jag utnyttja samma procedur för att hämta en enskild kursdeltagare.

Den resulterande SQL:en ska alltså se ut så här:

SELECT \* FROM KURSDELTAGARE WHERE DELTAGARID=@DELTAGARID

Jag har tänkt att skicka in 0 som deltagarid då jag vill ha alla kursdeltagare och ett relevant kursdeltagarid då jag vill ha en enskild deltagare.

Hur kan jag hänga på where-villkoret på enklaste sätt då deltagarid\<\>0? DVS hur ska t-sql:en se ut?

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

## #2 — Brimba, 2007-01-01T08:29Z

Nu pratar jag sql-server (vilken databas använder du?)

Ett sätt är att bygga upp din fråga dynamiskt i spn och exekvera den med sp_executesql.

Ett annat sätt är att använda case, exempelvis

```
SELECT 
    * 
FROM 
    KURSDELTAGARE 
WHERE 
    DELTAGARID = CASE @DELTAGARID WHEN 0 THEN DELTAGARID ELSE @DELTAGARID END
```

ett annat sätt är att skapa två nya sp:s som du kör beroende på vad som skickas in, exempelvis

```
IF (@DELTAGARID > 0)
    EXEC deltagaremedid @DELTAGARID
ELSE
    EXEC deltaridutanid
```

ett tredje sätt är att ha två frågor direkt i spn, exempelvis

```
IF (@DELTAGARID > 0)
    SELECT * FROM KURSDELTAGARE WHERE DELTAGARID=@DELTAGARID
ELSE
    SELECT * FROM KURSDELTAGARE
```

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

## #3 — clarkbones, 2007-01-02T12:43Z

Jag använder SQL Server.

Den första lösningen verkar passa mig bäst. Tack. Men om personid är null så fungerar inte jämförelsen och posten returneras inte.

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

## #4 — Lukaspojken, 2007-01-02T18:20Z

Varför inte skapa en ny procedur som hanterar alla deltagare? I alla fall, jag tror jag såg denna struktur på where-sats ute här på forumet.

```
SELECT * FROM KURSDELTAGARE 
WHERE DELTAGARID = @DELTAGARID OR 0 = @DELTAGARID
```

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

---

Tråden på webben: https://www.webforum.nu/amne/databaser-sql/155438-t-sql
