Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Получаване на връщана стойност в C# asp.net от съхранена процедура (проблем със синтаксиса)

За да заснемете ВЪЗРАЩАНА СТОЙНОСТ (връщана от SQL с помощта на синтаксиса RETURN({number})), използвайте:

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

Освен това вероятно трябва да използвате SCOPE_IDENTITY() вместо @@IDENTITY

Редактиране:
Значи вашият proc ще направи нещо като:

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

И вашият C# код за извличане на тази стойност би бил:

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

Редактиране 2:
Добре, първоначалният въпрос обърка проблема, тъй като „връщаната стойност“ е нещо различно от това, което всъщност правите, което връща набор от резултати от една колона.

Така че вместо това НЕ добавете параметър ReturnValue изобщо. Просто използвайте ExecuteScalar() като използвате оригиналната си настройка на SqlCommand, както следва:

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


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Поправете съобщение 8117 „Операнд типът данни varchar е невалиден за оператор сума“ в SQL Server

  2. SqlDataSourceEnumerator.Instance.GetDataSources() не намира локален екземпляр на SQL сървър 2008

  3. Как да свържете текст от множество редове в един текстов низ в SQL Server

  4. Как да получите дата във формат ГГГГ-ММ-ДД от TSQL поле за дата и час?

  5. CHARINDEX() срещу PATINDEX() в SQL Server – Каква е разликата?