sql >> Database >  >> RDS >> Sqlserver

Moet de scalaire variabele @ID declareren voor invoegparameter

Het probleem is nog steeds dat u hetzelfde "bereik" probeert te gebruiken met twee verschillende SQL-opdrachten. Zelfs als ze dezelfde "variabele" zijn in C# in SQL, hebben ze een ander bereik.

U moet beide instructies in één opdracht uitvoeren en de @ID . toevoegen parameter als een Output parameter om de identiteit in te voegen en eruit te halen:

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. Toestemming voor toegang tot sys.dm_db_index_usage_stats

  2. Hoe kan ik deze query verbeteren om het gebruik van geneste weergaven te voorkomen?

  3. Incrementele statistieken verzamelen in 11g

  4. Waarom zou een Oracle-synoniem een ​​ander aantal rijen teruggeven aan de onderliggende tabel?