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

Należy zadeklarować zmienną skalarną @ID dla parametru wstawiania

Problem nadal polega na tym, że próbujesz użyć tego samego „zakresu” z dwoma różnymi poleceniami SQL. Nawet jeśli są one tą samą „zmienną” w C# w SQL, mają inny zakres.

Musisz wykonać obie instrukcje w jednym poleceniu i dodać @ID parametr jako Output parametr w celu wstawienia i pobrania tożsamości:

nonqueryCommand.CommandType = CommandType.Text;
nonqueryCommand.CommandText = "INSERT tblLoginLogTable (UserName, LoggedInDate, LoggedInTime) VALUES (@UserName, @LoggedInDate, @LoggedInTime); " + 
                              "SELECT @ID = SCOPE_IDENTITY()";
nonqueryCommand.Parameters.AddWithValue("@UserName", txtUserName.Text);
nonqueryCommand.Parameters.AddWithValue("@LoggedInDate", DateTime.Now);
nonqueryCommand.Parameters.AddWithValue("@LoggedInTime", DateTime.Now);
nonqueryCommand.Parameters.Add("@ID",SqlDbType.Int).Direction = ParameterDirection.Output;

thisConnection.Open();
nonqueryCommand.ExecuteNonQuery(); 

int id = (int)nonqueryCommand.Parameters["@ID"];


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Co to jest bezpłatne narzędzie do porównywania dwóch baz danych SQL Server?

  2. Aktualizowanie kolumny bitów SQL z Entity Framework

  3. Jak uzyskać wszystkie tabele, które mają podstawowe ograniczenie klucza utworzone w bazie danych SQL Server — SQL Server / Samouczek TSQL 57

  4. Zmień typ danych kolumny za pomocą klucza podstawowego

  5. Czy muszę używać bloku try..catch i jawnego wycofywania w procedurze SQL Server?