sql >> Database >  >> RDS >> Sqlserver

Een retourwaarde verkrijgen in C# asp.net van een opgeslagen procedure (syntaxisprobleem)

Om een ​​RETURN VALUE vast te leggen (geretourneerd door SQL met gebruik van de RETURN({number}) syntaxis) gebruik:

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

U zou waarschijnlijk ook SCOPE_IDENTITY() moeten gebruiken in plaats van @@IDENTITY

Bewerken:
Dus je sproc zou zoiets doen als:

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

En uw C#-code om die waarde op te halen zou zijn:

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

Bewerken 2:
Ok, de oorspronkelijke vraag bracht het probleem in de war omdat de "retourwaarde" iets anders is dan wat u feitelijk doet, namelijk het retourneren van een resultatenset met één kolom.

Dus in plaats daarvan NIET voeg überhaupt een ReturnValue-parameter toe. Gebruik gewoon ExecuteScalar() met uw originele SqlCommand-configuratie zoals hieronder:

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


  1. Verkeerde waarde geretourneerd door mysql float

  2. Een GDI-bronlek behandelen

  3. Mysql count vs mysql SELECT, welke is sneller?

  4. UI-ontwerppatronen die niet worden geschaald