sql >> Databasteknik >  >> RDS >> Sqlserver

Få ett returvärde i C# asp.net från en lagrad procedur (syntaxproblem)

För att fånga ett RETURN VALUE (returnerat av SQL med syntaxen RETURN({number})) använd:

cmdHeader.Parameters.Add("@ReturnValue", SqlDbType.Int, 4).Direction = ParameterDirection.ReturnValue;

Dessutom bör du förmodligen använda SCOPE_IDENTITY() istället för @@IDENTITY

Redigera:
Så din sproc skulle göra något i stil med:

DECLARE @NewId INTEGER
INSERT SomeTable(FieldA) VALUES ('Something')
SELECT @NewId = SCOPE_IDENTITY()
RETURN (@NewId)

Och din C#-kod för att hämta det värdet skulle vara:

int newId = cmdHeader.Parameters[@ReturnValue].value;

Redigera 2:
Ok, den ursprungliga frågan förvirrade problemet eftersom "avkastningsvärdet" är en annan sak än vad du faktiskt gör, vilket är att returnera resultat från en enda kolumn.

Så istället GÖR INTE lägg till en ReturnValue-parameter överhuvudtaget. Använd bara ExecuteScalar() med din ursprungliga SqlCommand-inställning enligt nedan:

int newId = Convert.ToInt32(cmdHeader.ExecuteScalar());


  1. Guide till designdatabas för uppgiftshanteraren i MySQL

  2. Arbeta med Java Data i Qlik Sense

  3. SQL Server DELETE – Ta bort en eller flera rader från en tabell med något avancerade scenarier

  4. DELETE med LEFT JOIN med LIMIT i MySQL