Я новичок в хранимых процедурах. Когда я запускаю это, я получаю сообщение об ошибке: Ошибка преобразования типа данных int в tinyint. В моем С# был следующий код:
mySqlcmd.CommandText = "EXECUTE PhoneNumber_Insert @p_PhoneNumberTypeID, @p_PersonID";
mySqlcmd.Parameters.Add("@p_PhoneNumberTypeID", SqlDbType.TinyInt).Value = 1;
mySqlcmd.Parameters.Add("@p_PersonID", SqlDbType.Int).Value = "754381";
mysqlConnection.Open();
mySqlcmd.ExecuteNonQuery();
mysqlConnection.Close();
опубликуйте свой сохраненный proc. определение. Возможно, у вас неправильно настроены типы параметров....
@Flydog57 - я сделал это, и теперь я получаю эту ошибку.
"PhoneNumber_Insert ожидает параметр @PhoneNumberTypeId, который не был предоставлен" mySqlcmd.Parameters.Add("@p_PhoneNumberTypeID", SqlDbType.TinyInt).Value= (byte)1;
mySqlcmd.Parameters.Add("@p_PersonID", SqlDbType.Int).Value = "754381";
Почему вы передаете это как строку?
Ваш код слишком странный... В MySQL хранимая процедура выполняется с использованием ключевого слова CALL
. Ключевое слово EXECUTE
используется для выполнения подготовленного оператора, для которого ключевое слово USING
перед его параметрами является обязательным. И вы используете пользовательские переменные в качестве параметров, значения которых нельзя присвоить через Parameters.Add
.
о вашей ошибке, возможно, вам нужно использовать explicitly conversion
mySqlcmd.Parameters.Add("@p_PhoneNumberTypeID", SqlDbType.TinyInt).Value = (byte)1; или mySqlcmd.Parameters.AddWithValue("@p_PhoneNumberTypeID", 1);
Вы столкнулись с ошибкой 101302 в MySQL Connector/NET. Есть три возможных обходных пути:
MySqlDbType.Byte
: mySqlcmd.Parameters.Add("@p_PhoneNumberTypeID", MySqlDbType.Byte).Value = 1;
@MitchWheat Это проблема, возникающая с различными типами данных; см. дублированный отчет об ошибке: bugs.mysql.com/bug.php?id=101424. В этом отчете об ошибке только что приведены шаги воспроизведения для BOOL
.
Превратите
1
вbyte
(mySqlcmd.Parameters.Add("@p_PhoneNumberTypeID", SqlDbType.TinyInt).Value = (byte) 1;
). Дайте мне знать, если это сработает, и я напишу это как ответ