У меня есть процедура, которая обновляет некоторые записи. Когда я его выполняю, я получаю следующее исключение
"Строковые или двоичные данные будут усечены.\r\nОперация прервана."
Я мог обнаружить, что это происходит, когда длина параметра больше длины переменной. Я проверил еще раз, изменив размер. Но не сработало. Повторите то же исключение еще раз. Как я могу это решить? Пожалуйста, помогите
Вот мой код для обновления
bool isFinished = dba.update(обозначение, титул, инициалы, фамилия, полное имя, вызывающее имя, гражданский статус, национальность, ник, день рождения, паспорт, hometp, mobiletp, провинция, район, дивизия, электорат, граманиладхари, такафулл, p_city, c_city, p_hno, c_hno, tokens_P, tokens_C, previousEmployeements, банк, филиал, тип, счет, пол, образовательныйQ, LanguageE, LanguageS, LanguageT, empNo, AppNo); если (завершено) { WebMsgBox.Show("Успешно вставлено!"); } еще { WebMsgBox.Show("Произошли некоторые ошибки"); } } еще { WebMsgBox.Show("Некоторые поля недействительны"); } } } Это код для передачи параметров хранимым процедурам
попробуйте { используя (SqlCommand cmd = новый SqlCommand()) { cmd.ТипКоманды = ТипКоманды.Текст; cmd.ТипКоманды = ТипКоманды.СохраненнаяПроцедура; cmd.Connection = соединение; cmd.CommandTimeout = 0; cmd.Transaction = транзакции; /*======================Обновление сведений о сотруднике==================== ==========*/ cmd.CommandText = "update_HS_HR_EMPLOYEE_AADM"; cmd.Parameters.Add("@appNo", SqlDbType.Int).Value = appNo; cmd.Parameters.Add("@CALLING_NAME", SqlDbType.VarChar).Value = CallingName; cmd.Parameters.Add("@INITIALS", SqlDbType.VarChar).Value = инициалы; cmd.Parameters.Add("@ФАМИЛИЯ", SqlDbType.VarChar).Value = фамилия; cmd.Parameters.Add("@TITLE", SqlDbType.VarChar).Value = title; cmd.Parameters.Add("@NAME", SqlDbType.VarChar).Value = полное имя; cmd.Parameters.Add("@FULLNAME", SqlDbType.VarChar).Value = полное имя + " " + фамилия; cmd.Parameters.Add("@NIC", SqlDbType.VarChar).Value = nic; cmd.Parameters.Add("@BDY", SqlDbType.VarChar).Value = день рождения; cmd.Parameters.Add("@GENDER", SqlDbType.VarChar).Value = пол; cmd.Parameters.Add("@NATIONALITY", SqlDbType.VarChar).Value = национальность; cmd.Parameters.Add("@CIVILSTATUS", SqlDbType.VarChar).Value = CivilSatatus; cmd.Parameters.Add("@DESIGNATION", SqlDbType.VarChar).Value = обозначение; cmd.Parameters.Add("@P_ADD1", SqlDbType.VarChar).Value = p_hno; cmd.Parameters.Add("@P_ADD2", SqlDbType.VarChar).Value = tokens_P[0]; если (tokens_P.Length > 1) cmd.Parameters.Add("@P_ADD3", SqlDbType.VarChar).Value = tokens_P[1]; еще cmd.Parameters.Add("@P_ADD3", SqlDbType.VarChar).Value = ""; cmd.Parameters.Add("@P_CITY", SqlDbType.VarChar).Value = p_city; cmd.Parameters.Add("@TP_HOME", SqlDbType.VarChar).Value = hometp; cmd.Parameters.Add("@TP_MOBILE", SqlDbType.VarChar).Value = mobiletp; cmd.Parameters.Add("@PROVINCE", SqlDbType.VarChar).Value = провинция; cmd.Parameters.Add("@DISTRICT", SqlDbType.VarChar).Value = район; cmd.Parameters.Add("@C_ADD1", SqlDbType.VarChar).Value = c_hno; cmd.Parameters.Add("@C_ADD2", SqlDbType.VarChar).Value = tokens_C[0]; cmd.Parameters.Add("@PER_GNDIV_CODE", SqlDbType.VarChar).Value = gramaNiladhari; cmd.Parameters.Add("@PER_DSDIV_CODE", SqlDbType.VarChar).Value = деление; cmd.Parameters.Add("@TAKAFUL", SqlDbType.VarChar).Value = takafull; cmd.Parameters.Add("@PASSPORT_NO", SqlDbType.VarChar).Value = паспорт; если (tokens_C.Length > 1) cmd.Parameters.Add("@C_ADD3", SqlDbType.VarChar).Value = tokens_C[1]; еще cmd.Parameters.Add("@C_ADD3", SqlDbType.VarChar).Value = ""; cmd.Parameters.Add("@C_CITY", SqlDbType.VarChar).Value = c_city; cmd.Parameters.Add("@ELECTORATE", SqlDbType.VarChar).Value = электорат; //int appNO = int.Parse((cmd.ExecuteScalar().ToString())); cmd.ExecuteNonQuery(); cmd.Параметры.Очистить(); } } Это хранимая процедура
ИЗМЕНИТЬ ПРОЦЕДУРУ [dbo].[update_HS_HR_EMPLOYEE_AADM] @appNo Int, @CALLING_NAME VARCHAR(50), @ИНИЦИАЛЫ ВАРЧАР(50), @ФАМИЛИЯ ВАРЧАР(50), @TITLE ВАРЧАР(50), @ИМЯ ВАРЧАР(50), @ПОЛНОЕ ИМЯ ВАРЧАР(100), @НИК ВАРЧАР(15), @BDY ВАРЧАР(50), @ПОЛ СИМВОЛ(1), @НАЦИОНАЛЬНОСТЬ ВАРЧАР(50), @CIVILSTATUS ВАРЧАР(50), @DESIGNATION VARCHAR(50), @P_ADD1 VARCHAR(50), @P_ADD2 ВАРЧАР(50), @P_ADD3 VARCHAR(50), @P_CITY ВАРЧАР(50), @TP_HOME VARCHAR(50), @TP_MOBILE ВАРЧАР(50), @ПРОВИНЦИЯ ВАРЧАР(50), @РАЙОН ВАРЧАР(50), @C_ADD1 VARCHAR(50), @C_ADD2 VARCHAR(50), @C_ADD3 VARCHAR(50), @C_CITY ВАРЧАР(50), @ЭЛЕКТОРАТ ВАРЧАР(50), @PER_GNDIV_CODE VARCHAR(50), @PER_DSDIV_CODE VARCHAR(50), @ТАКАФУЛ ВАРЧАР(50), @PASSPORT_NO ВАРЧАР(50) КАК НАЧИНАТЬ обновить [HS_HR_EMPLOYEE_AADM] НАБОР [EMP_CALLING_NAME]=@CALLING_NAME ,[EMP_MIDDLE_INI]=@INITIALS ,[EMP_SURNAME]=@SURNAME ,[EMP_TITLE]=@TITLE ,[EMP_NAMES_BY_INI]=@NAME ,[EMP_FULLNAME]=@FULLNAME ,[EMP_NIC_NO]=@NIC ,[EMP_BIRTHDAY]=@BDY ,[EMP_GENDER]=@GENDER ,[NAT_CODE]
