sql >> Databáze >  >> RDS >> Sqlserver

Získání návratové hodnoty v C# asp.net z uložené procedury (problém se syntaxí)

K zachycení NÁVRATOVÉ HODNOTY (vrácené SQL pomocí syntaxe RETURN({číslo})) použijte:

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

Pravděpodobně byste také měli používat SCOPE_IDENTITY() místo @@IDENTITY

Upravit:
Váš sproc by tedy udělal něco jako:

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

A váš kód C# pro získání této hodnoty by byl:

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

Úprava 2:
Dobře, původní otázka zmátla problém, protože "návratová hodnota" je něco jiného než to, co ve skutečnosti děláte, což je vracení sady výsledků s jedním sloupcem.

Takže místo toho NEDĚLEJTE vůbec přidat parametr ReturnValue. Stačí použít ExecuteScalar() pomocí původního nastavení SqlCommand, jak je uvedeno níže:

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


  1. MySQL TIMEDIFF() vs TIMESTAMPDIFF():Jaký je rozdíl?

  2. MySQL:vyberte 5 řádků před a za konkrétním řádkem

  3. Nainstalujte webový server ve Windows XP s Apache2, PHP5 a MySQL4 – část 4

  4. Přidejte nový sloupec do databáze wordpress