---
title: "Output returnerar 8 hela tiden (T-SQL)"
type: "forum-thread"
url: "https://www.webforum.nu/amne/databaser-sql/168146-output-returnerar-8-hela-tiden-t-sql"
topic: "Databaser & SQL"
topic_url: "https://www.webforum.nu/amne/databaser-sql"
author: "SebastianE"
published: "2008-01-15T23:52:54.000Z"
updated: "2008-01-20T22:45:14.000Z"
replies: 13
views: 778
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/168146-output-returnerar-8-hela-tiden-t-sql"
---

# Output returnerar 8 hela tiden (T-SQL)

## #1 — SebastianE, 2008-01-15T23:52Z

Har en lagrad procedur som ser ut så här

```
ALTER PROC hamtaBilderVy
(
	@rader INT output,
	@StartRad INT,
	@SlutRad INT,
	@userID uniqueidentifier
)

AS
BEGIN
SELECT tillhorandeAnvandarID, bildid, bildAdress, altTagg, titleTagg, datum, (SELECT COUNT (bildid) FROM bildbehorighet WHERE bildid=bilder.bildid) AS Behorighet
FROM (
	SELECT tillhorandeAnvandarID ,bildid, bildAdress, altTagg, titleTagg, datum, (
	SELECT COUNT (bildid) FROM bildbehorighet WHERE bildid=bilder.bildid) AS Behorighet, ROW_NUMBER() OVER(Order BY bildID) AS RowNumber
	FROM bilder
)
bilder
WHERE RowNumber >= @StartRad AND RowNumber <= @SlutRad AND bilder.tillhorandeAnvandarID=@userID
END

SELECT @rader=COUNT(bildid) FROM bilder
WHERE tillhorandeAnvandarID=@userID
```

 

Kör man 

```
SELECT COUNT (bildID) FROM BILDER
WHERE tillhorandeAnvandarID='någotuserid'
```

Får man ut värdet 14 för en speciell användare.

Kör man den lagrade proceduren får man ut att @rader har värdet 8. Har testat med SET @rader=100. Lik förbaskat får man ut att @rader har värdet 8.

För att köra min lagrade procedur använder jag mig utav ASP.NET C#
där jag har följande kod i ett Dataåtkomstlager

```
                SqlCommand cmd = new SqlCommand("hamtaBilderVy", con);
                cmd.CommandType = CommandType.StoredProcedure;
                cmd.Parameters.AddWithValue("@rader", SqlDbType.Int);
                cmd.Parameters["@rader"].Direction = ParameterDirection.Output;

                cmd.Parameters.AddWithValue("@StartRad", startRad);
                cmd.Parameters.AddWithValue("@SlutRad", slutRad);
                cmd.Parameters.AddWithValue("@userID", userID);

                int rader = (int)(cmd.Parameters["@rader"].Value);
```

rader får då värdet 8  :( 

Någon som har idé vad jag gör för fel och hur man åtgärdar det?

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

## #2 — nitro2k01, 2008-01-16T01:18Z

Jag är ingen stjärna på SQL, men ett par saker jag tänker på. Ingenstans verkar du faktiskt köra frågan. Det kanske inte är så man gör dock?
En annan sak jag funderar över. Har du prövat att skriva ut cmd.Parameters\["@rader"\].Value till debugkonsolen eller dylikt utan att casta den till en int?

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

## #3 — SebastianE, 2008-01-16T11:38Z

> **nitro2k01 skrev:**
>
> Jag är ingen stjärna på SQL, men ett par saker jag tänker på. Ingenstans verkar du faktiskt köra frågan. Det kanske inte är så man gör dock?
> En annan sak jag funderar över. Har du prövat att skriva ut cmd.Parameters\["@rader"\].Value till debugkonsolen eller dylikt utan att casta den till en int?

Klart jag kör frågan men den koden har jag inte tagit med. Att typkonventera om den till en string går tyvärr inte då den är av typen int. Tyvärr tror jag inte (har inte lyckats) att få ett värde av cmd.Parameters\["@rader"\].Value i debugmodet. Dock får jag ut värdet 8 på int rader.

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

## #4 — Gein, 2008-01-16T11:54Z

Det skulle helt klart underlätta om man fick se hur du exekverar proceduren.

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

## #5 — SebastianE, 2008-01-16T12:30Z

> **Gein skrev:**
>
> Det skulle helt klart underlätta om man fick se hur du exekverar proceduren.

Koden för att exekvera frågan

```
    public static ArrayList hamtaVyBilder(int startRad, int slutRad, string userID)
    {
        using (SqlConnection con = new SqlConnection(anslutningStrang))
        {
            try
            {
                //Öppna databasanslutning
                con.Open();

                //Skapa ett kommando och lägger till parametrars
                SqlCommand cmd = new SqlCommand("hamtaBilderVy", con);
                cmd.CommandType = CommandType.StoredProcedure;
                cmd.Parameters.AddWithValue("@rader", SqlDbType.VarChar);
                cmd.Parameters["@rader"].Direction = ParameterDirection.Output;
                cmd.Parameters.AddWithValue("@StartRad", startRad);
                cmd.Parameters.AddWithValue("@SlutRad", slutRad);
                cmd.Parameters.AddWithValue("@userID", userID);

                int rader = (int)(cmd.Parameters["@rader"].Value);

                // Exekvera kommandot.
                using (SqlDataReader reader = cmd.ExecuteReader())
                {
                    ArrayList list = new ArrayList();
                    // Advance to the next record.
                    if (reader.HasRows)
                    {
                        while (reader.Read())
                        {
                            // Skapar och retunerar ett objekt
                            list.Add(new Bilder(reader.GetGuid(0).ToString(), reader.GetInt32(1), reader.GetString(2), reader.GetString(3), reader.GetString(4), reader.GetDateTime(5), reader.GetInt32(6), rader));
                        }
                        return list;
                    }
                    else
                    {
                        throw new ApplicationException("Inga bilder hittades för användaren.");
                    }
                }
            }
            catch (Exception ex){
                throw new ApplicationException("Misslyckades hämta vybilder.<p>"+ex+"</p>");
            }
        }
    }
```

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

## #6 — Gein, 2008-01-16T13:17Z

Okej, jag är ju uppenbarligen inte helt hemma med ASP.NET C#, speciellt inte DB-anrop.
Hur blir det om du exekverar proceduren direkt i Management Studio?

```
DECLARE @rader int
EXECUTE hamtaBilderVy @rader output, [b]..., ..., ...[/b]
```

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

## #7 — SebastianE, 2008-01-16T15:24Z

> **Gein skrev:**
>
> Okej, jag är ju uppenbarligen inte helt hemma med ASP.NET C#, speciellt inte DB-anrop.
> Hur blir det om du exekverar proceduren direkt i Management Studio?
>
>
> ```
> DECLARE @rader int
> EXECUTE hamtaBilderVy @rader output, [b]..., ..., ...[/b]
> ```

Med frågan
DECLARE @rader int
EXECUTE hamtaBilderVy @rader output, @StartRad=10, @SlutRad =15, @userID='e70436aa-073d-483c-ac4c-b7c3ab1ab386'

Får jag ut mina rader. När jag kollar under fliken Message i Microsoft SQL Server Management Studio får jag bara fram (5 row(s) affected) :OO

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

## #8 — Gein, 2008-01-16T15:45Z

Vad innehåller @rader efter att du kört det kommandot? 
Alltså:

```
DECLARE @rader int
EXECUTE hamtaBilderVy @rader output, @StartRad=10, @SlutRad =15, @userID='e70436aa-073d-483c-ac4c-b7c3ab1ab386'
SELECT @rader
```

Får du ett förväntat resultat eller inte i detta fall?

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

## #9 — SebastianE, 2008-01-16T16:36Z

> **Gein skrev:**
>
> Vad innehåller @rader efter att du kört det kommandot? 
> Alltså:
>
>
> ```
> DECLARE @rader int
> EXECUTE hamtaBilderVy @rader output, @StartRad=10, @SlutRad =15, @userID='e70436aa-073d-483c-ac4c-b7c3ab1ab386'
> SELECT @rader
> ```
>
> 
> Får du ett förväntat resultat eller inte i detta fall?

Japp det får jag!

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

## #10 — Gein, 2008-01-16T18:40Z

Då borde vi kunna konstatera att det är något vid anropet i C# som är fel. Tyvärr kan jag inte hjälpa dig där.

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

## #11 — SebastianE, 2008-01-16T19:55Z

> **Gein skrev:**
>
> Då borde vi kunna konstatera att det är något vid anropet i C# som är fel. Tyvärr kan jag inte hjälpa dig där.

Japp. Men tusen tack för hjälpen ändå!

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

## #12 — SebastianE, 2008-01-17T20:54Z

Det var visst fel i min ASP.NET kod. Så nu funkar allt :)

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

## #13 — Gein, 2008-01-17T21:27Z

Skriv gärna ut vad felet var så kanske det hjälper andra? ;)

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

## #14 — SebastianE, 2008-01-20T22:45Z

> **Gein skrev:**
>
> Skriv gärna ut vad felet var så kanske det hjälper andra? ;)

Självfallet. 

SQL-frågan var helt rätt. Vad som var problemet kan man läsa på <http://www.dominicpettifer.co.uk/displayBlog.aspx?id=8>.

Fick göra om min asp.net kod till följande:

```
 public static ArrayList hamtaVyBilder(int startRad, int slutRad, string userID)
  {
  using (SqlConnection con = new SqlConnection(anslutningStrang))
  {
  try
  {
  //Öppna databasanslutning
  con.Open();

  //Skapa ett kommando och lägger till parametrars
  SqlCommand cmd = new SqlCommand("hamtaBilderVy", con);
  cmd.CommandType = CommandType.StoredProcedure;
  cmd.Parameters.AddWithValue("@rader", SqlDbType.Int);
  cmd.Parameters["@rader"].Direction = ParameterDirection.Output;
  cmd.Parameters.AddWithValue("@StartRad", startRad);
  cmd.Parameters.AddWithValue("@SlutRad", slutRad);
  cmd.Parameters.AddWithValue("@userID", userID);

  // Exekvera kommandot.
  using (SqlDataReader reader = cmd.ExecuteReader())
  {
  ArrayList list = new ArrayList();
  
  // Advance to the next record.
  if (reader.HasRows)
  {
  while (reader.Read())
  {
  // Skapar och retunerar ett objekt
  list.Add(new Bilder(reader.GetGuid(0).ToString(), reader.GetInt32(1), reader.GetString(2), reader.GetString(3), reader.GetString(4), reader.GetDateTime(5), reader.GetInt32(6), rader));
  }
  int rader = Convert.ToInt32(cmd.Parameters["@rader"].Value);
  return list;
  }
  else
  {
  throw new ApplicationException("Inga bilder hittades för användaren.");
  }
  }

  }
  catch (Exception ex)
  {
  throw new ApplicationException("Misslyckades hämta vybilder.<br/><br/>"+ex);
  }
  }
  }
```

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

---

Tråden på webben: https://www.webforum.nu/amne/databaser-sql/168146-output-returnerar-8-hela-tiden-t-sql
