При обновлении двух строк, затронутых в таблице SQL server
ALTER PROCEDURE [dbo].[sp_update_farmer_registration_web] @originname varchar(100), @farmerctscode varchar(100), @farmerseason varchar(100), @dateofjoinseco varchar(100), @governmentcode varchar(100), @firstname varchar(100), @lastname varchar(100), @surname varchar(100), @gender varchar(100), @dateofbirth varchar(100), @birthlocation varchar(100), @fathername varchar(100), @mothername varchar(100), @village varchar(100), @currentyearcooperative varchar(100), @phonenumber varchar(100), @observation varchar(100), @nooffarms varchar(100), @productionestimation varchar(100), @otherdetails varchar(max), @previouscropsdetails varchar(max), @firstlevelapprovalstatus varchar(100), @firstlevelapprovedby varchar(100), @secondlevelapprovalstatus varchar(100), @secondlevelapprovedby varchar(100), @firstlevelcomments varchar(max), @secondlevelcomments varchar(max), @updatedby varchar(100), @mastertype varchar(100) AS BEGIN SET NOCOUNT ON; DECLARE @sqlQuery VARCHAR(MAX) IF @mastertype = '' BEGIN SET @sqlQuery = 'UPDATE dbo.tbl_farmerregistration_' + @originname + ' SET farmerseason = ''' + @farmerseason + ''', dateofjoinseco = ''' + @dateofjoinseco + ''', governmentcode =''' + @governmentcode + ''', firstname = ''' + @firstname + ''', lastname = ''' + @lastname + ''', surname = ''' + @surname + ''', gender = ''' + @gender + ''', dateofbirth = ''' + @dateofbirth + ''', birthlocation = ''' + @birthlocation + ''', fathername = ''' + @fathername + ''', mothername = ''' + @mothername + ''', village = ''' + @village + ''', currentyearcooperative = ''' + @currentyearcooperative + ''', phonenumber = ''' + @phonenumber + ''', observation = ''' + @observation +''', nooffarms = ''' + @nooffarms + ''', produtionestimation = ''' + @productionestimation + ''', otherdetails = ''' + @otherdetails + ''',previouscropsdetails = ''' + @previouscropsdetails + ''', updatedby = ''' + @updatedby + ''', updateddate = GETDATE() WHERE farmerctscode = ''' + @farmerctscode + '''' END
Это и есть вышеупомянутый ИП
Когда я выполняю нижеприведенный запрос следующим образом
UPDATE dbo.tbl_farmerregistration_ivorycoast SET farmerseason = '2019', dateofjoinseco = '2012', governmentcode ='402787J', firstname = 'KITCHINDJOUHOU', lastname = 'OUATTARA', surname = 'A', gender = 'MALE', dateofbirth = '17/5/1981', birthlocation = 'FERKESSEDOUGOU', fathername = 'OUATTARA MEYERIGUE', mothername = 'OSSIELETIAN OUATTARA', WHERE farmerctscode = '1050669'
я получаю вывод в sql 2 строки затронуты
в таблице tbl_farmerregistration_ivorycoast вставлены две строки для этого farmerctscode = '1050669'
farmerseason dateofjoinseco governmentcode имя фамилия отчество пол dateofbirth birthlocation отчество mothername
2019 2012 402787J KITCHINDJOUHOU OUATTARA мужчина 17/5/1981 Ferek Ras Osel
2019 2012 402787J KITCHINDJOUHOU OUATTARA мужчина 17/5/1981 Ferek Ras Osel
как исправить эту проблему.
пожалуйста, дайте мне знать.
как исправить эту ошибку
Что я уже пробовал:
Изменить процедуру [dbo].[sp_update_farmer_registration_web]
@originname varchar(100),
@farmerctscode varchar(100),
@farmerseason varchar(100),
@dateofjoinseco varchar(100),
@governmentcode varchar(100),
@firstname varchar(100),
@фамилия varchar(100),
@фамилия варчар(100),
@gender varchar(100),
@dateofbirth varchar(100),
@birthlocation varchar(100),
@fathername varchar(100),
@mothername varchar(100),
@деревня варчар(100),
@currentyearcooperative varchar(100),
@phonenumber varchar(100),
@наблюдение varchar(100),
@nooffarms varchar(100),
@productionestimation varchar(100),
@otherdetails varchar(Макс),
@previouscropsdetails varchar(Макс),
@firstlevelapprovalstatus varchar(100),
@firstlevelapprovedby varchar(100),
@secondlevelapprovalstatus varchar(100),
@secondlevelapprovedby varchar(100),
@firstlevelcomments varchar(макс.),
@secondlevelcomments varchar(макс.),
@updatedby varchar(100),
@mastertype varchar(100)
АС
НАЧАТЬ
УСТАНОВИТЕ NOCOUNT ON;
Объявить @sqlQuery VARCHAR(MAX)
Если @mastertype = "
НАЧАТЬ
Набор @SQL-запрос = 'ДБО обновление.tbl_farmerregistration_' + @originname + ' набор farmerseason = "' + @farmerseason + "',
dateofjoinseco = "' + @dateofjoinseco + "', governmentcode ="' + @governmentcode + "', firstname = "' + @firstname + "',
фамилия = "' + @фамилия + "', фамилия = "' + @фамилия + "', пол = "' + @пол + "', дата рождения = "' + @Дата рождения + "',
birthlocation = "' + @birthlocation + "', fathername = "' + @fathername + "', mothername = "' + @mothername + "',
деревня = "' + @деревня + "', currentyearcooperative = "' + @currentyearcooperative + "',
и phonenumber = "' + @номер_телефона + ", наблюдение = "' + наблюдение@+"', nooffarms = "' + @nooffarms + "', produtionestimation = "' + @productionestimation + "',
otherdetails = "' + @otherdetails + "',previouscropsdetails = "' + @previouscropsdetails + "',
updatedby = "' + @updatedby + "', updateddate = GETDATE()
Где farmerctscode = "' + @farmerctscode + ""
КОНЕЦ
Это и есть вышеупомянутый ИП
Когда я выполняю нижеприведенный запрос следующим образом
Обновление dbo.tbl_farmerregistration_ivorycoast SET farmerseason = '2019',
dateofjoinseco = '2012', governmentcode ='402787J', firstname = 'KITCHINDJOUHOU',
фамилия = 'Уаттара', фамилия = 'а', пол = 'мужчина', дата рождения = '17/5/1981',
birthlocation = 'ФЕРКЕССЕДОУГОУ', отчество = 'Уаттара MEYERIGUE', mothername = 'OSSIELETIAN Уаттара',
Где farmerctscode = '1050669'
я получаю вывод в sql 2 строки затронуты
в таблице tbl_farmerregistration_ivorycoast вставлены две строки для этого farmerctscode = '1050669'
farmerseason dateofjoinseco governmentcode имя фамилия отчество пол dateofbirth birthlocation отчество mothername
2019 2012 402787J KITCHINDJOUHOU OUATTARA мужчина 17/5/1981 Ferek Ras Osel
2019 2012 402787J KITCHINDJOUHOU OUATTARA мужчина 17/5/1981 Ferek Ras Osel
как исправить эту проблему.
пожалуйста, дайте мне знать.
как исправить эту ошибку
Richard Deeming
Вы говорите SQL обновить строки, соответствующие определенному условию.
У вас есть две строки в таблице, соответствующие этому условию.
SQL обновляет две строки.
Это не ошибка. То есть SQL делает именно то, что вы ему сказали.
Единственная ошибка-это уязвимость SQL-инъекции, которую вы ввели, как уже упоминалось в решении 2.