Параметр In-Out для SqlCommand
У меня есть следующий параметр для SqlCommand. Как сделать так, чтобы вставлять и изменять значение параметра для хранимой процедуры.
SqlCommand mySqlCommand = new SqlCommand("aspInsertZipCode", mySqlConnection);
mySqlCommand.CommandType = CommandType.StoredProcedure;
mySqlCommand.Parameters.Add("@DataRows", dataStringToProcess.ToString());
Ответы
Ответ 1
var pInOut = mySqlCommand.Parameters.Add("@DataRows", dataStringToProcess.ToString());
pInOut.Direction = ParameterDirection.InputOutput;
И затем, чтобы прочитать выходное значение после выполнения команды:
// assumes that the parameter is a string and that it could possibly be null
string value = Convert.IsDBNull(pInOut.Value) ? null : (string)pInOut.Value;
Ответ 2
SqlParameter
имеет перечисление Direction
. Установите это значение.
Затем используйте SqlCommand.Parameters.Add
, который принимает SqlParameter
.
Направление параметра:
http://msdn.microsoft.com/en-us/library/system.data.parameterdirection.aspx
Затем вы можете вывести значение после вызова ExecuteNonQuery
(например), получив Value
из параметра вне коллекции команд:
myCommand.Parameters["@paramName"].Value
Не помню, но я думаю, что на нем есть индекс.
В качестве альтернативы существует один вкладыш:
myCommand.Parameters.AddWithValue("@paramName", value).Direction = ParameterDirection.InputOutput;
Ответ 3
Одним из атрибутов параметра SQL Command является Direction. Вы хотели бы использовать (уходит из памяти)
SqlCommand mySqlCommand = new SqlCommand("aspInsertZipCode", mySqlConnection);
mySqlCommand.CommandType = CommandType.StoredProcedure;
mySqlCommand.Parameters.Add("@DataRows", dataStringToProcess.ToString());
mySqlCommand.Parameters("@DataRows").Direction = ParameterDirection.InputOutput;
Ответ 4
SqlParameter DataRows = new SqlParameter("@DataRows", SqlDbType.Text)
{ Value = dataStringToProcess.ToString(), Direction = ParameterDirection.InputOutput};
mySqlCommand.Parameters.Add(DataRows);