Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Pobieranie wartości zwracanej w C# asp.net z procedury składowanej (problem ze składnią)

Aby przechwycić WARTOŚĆ ZWRACANA (zwracaną przez SQL przy użyciu składni RETURN({liczba})) użyj:

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

Ponadto prawdopodobnie powinieneś używać SCOPE_IDENTITY() zamiast @@IDENTITY

Edytuj:
Więc Twój sproc zrobiłby coś takiego:

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

Twój kod C# do pobrania tej wartości to:

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

Edytuj 2:
Ok, pierwotne pytanie myliło problem, ponieważ „wartość zwracana” to coś innego niż to, co faktycznie robisz, czyli zwracanie zestawu wyników w pojedynczej kolumnie.

Więc zamiast tego NIE dodaj w ogóle parametr ReturnValue. Po prostu użyj ExecuteScalar() używając oryginalnej konfiguracji SqlCommand, jak poniżej:

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. Jak wyeksportować wynik zapytania do pliku .csv lub pliku rozdzielanego tabulatorami w programie SQL Server Management Studio (SSMS) — samouczek SQL Server/TSQL — część 23

  2. 5 sposobów na zwracanie wierszy zawierających małe litery w SQL Server

  3. Czy można używać wyszukiwania pełnotekstowego (FTS) z LINQ?

  4. równoważne typy danych mysql

  5. Eliminowanie zduplikowanych wartości na podstawie tylko jednej kolumny tabeli