---
title: "Retunera två värden"
type: "forum-thread"
url: "https://www.webforum.nu/amne/databaser-sql/141089-retunera-två-värden"
topic: "Databaser & SQL"
topic_url: "https://www.webforum.nu/amne/databaser-sql"
author: "Dino"
published: "2006-01-18T13:37:51.000Z"
updated: "2006-01-18T14:18:33.000Z"
replies: 8
views: 357
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/141089-retunera-två-värden"
---

# Retunera två värden

## #1 — Dino, 2006-01-18T13:37Z

SQL Server 2005

Har väldigt förenklat en sp som ser ut som nedan. Problemet är att jag inte kan spara denna sp i vs.net pga raden med fet stil. Så hur skall jag retunera antal rader som Templist har?

```
ALTER PROCEDURE up_Selectxxx
(
   @cat int,
   @pageindex int,
   @numrows int,
   @rowcount int OUTPUT
)
AS
BEGIN
	
   DECLARE @startrowindex int
   SET @startrowindex = (@pageindex * @numrows) + 1;
	
   WITH Templist AS (
      SELECT ROW_NUMBER() OVER (ORDER BY Id) AS Row, Id, Title FROM Table1 WHERE Visible = 1 AND CatId = @catid
   )
     
   [b]SET @rowcount = (SELECT COUNT(Id) FROM Templist)[/b]
   SELECT * FROM Templist WHERE Row BETWEEN @startrowindex AND @startrowindex+@numrows-1
END
```

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

## #2 — @nders, 2006-01-18T13:42Z

Varför kan du inte spara den? Felmeddelande?
Kan du inte lägga med den som en subquery?

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

## #3 — Dino, 2006-01-18T13:44Z

Felmeddelandet lyder "Incorrect syntax near the keyword 'SET'".
Subquery, var?

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

## #4 — @nders, 2006-01-18T13:46Z

Typ?

```
SELECT *, (SELECT COUNT(Id) FROM Templist) as foo 
FROM Templist WHERE Row BETWEEN @startrowindex AND @startrowindex+@numrows-1
```

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

## #5 — Brimba, 2006-01-18T13:47Z

```
SELECT @rowcount = COUNT(Id) FROM Templist
```

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

## #6 — Dino, 2006-01-18T13:56Z

Brimbas fungerar inte. Felmeddelande, "Could not use view or function 'Templist' because of binding errors.".

@nders fungerar. **Men** vill ju att count värdet skall in i output parametern(@rowcount) och inte vara en del av det andra resultatet.

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

## #7 — Brimba, 2006-01-18T14:08Z

Du kan bara använda den en gång (Templist). 
http://msdn2.microsoft.com/en-us/library/ms146017(en-US,SQL.90).aspx

Mitt förslag:

```
ALTER PROCEDURE up_Selectxxx
(
   @cat int,
   @pageindex int,
   @numrows int,
   @rowcount int OUTPUT
)
AS
BEGIN
	
   DECLARE @startrowindex int
   SET @startrowindex = (@pageindex * @numrows) + 1;
	
   WITH Templist AS (
      SELECT ROW_NUMBER() OVER (ORDER BY Id) AS Row, Id, Title FROM Table1 WHERE Visible = 1 AND CatId = @catid
   )
   
SELECT * FROM Templist WHERE Row BETWEEN @startrowindex AND @startrowindex+@numrows-1
  
   SET @rowcount = (SELECT @rowcount = COUNT(Id) FROM Table1 WHERE Visible = 1 AND CatId = @catid)
   
END
```

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

## #8 — @nders, 2006-01-18T14:09Z

> Men vill ju att count värdet skall in i output parametern(@rowcount) och inte vara en del av det andra resultatet.

Jo, jag förstod det, men eftersom du sa att det inte gick gav jag ett förslag till en alternativ lösning.

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

## #9 — Dino, 2006-01-18T14:18Z

Hade hoppats att jag inte skulle behöva göra två select för att selecten i dess fulla skick är ganska maffig, men får väl bli så i vilket fall. Eller helt enkelt använda @nders alternativ. Får se vilket som visar sig vara mer effektivt.

Tack för svaren.

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

---

Tråden på webben: https://www.webforum.nu/amne/databaser-sql/141089-retunera-två-värden
