Ответ 1
Вы пытаетесь объединить строку и целое число.
Вам нужно отличить @ID
как строку.
попробуйте:
SET @[email protected]+' AND Emp_Id_Pk=' + CAST(@ID AS NVARCHAR(10))
Я создал процедуру, описанную ниже:
CREATE procedure getdata
(
@ID int,
@frm varchar(250),
@to varchar(250)
)
AS
BEGIN
DECLARE @SQL nvarchar(500)
set @SQL = 'select'
set @SQL = @SQL + ' EmpName, Address, Salary from Emp_Tb where 1=1 '
IF (@ID <> '' and @ID is not null)
Begin
SET @[email protected]+' AND Emp_Id_Pk=' [email protected]
End
END
print @sql
--execute (@sql)
Я пытаюсь выполнить его, используя:
**execute getdata 3,'','';**
Но я получаю следующую ошибку:
Ошибка конверсии при преобразовании значения nvarchar 'выберите EmpName, Адрес, Зарплата от Emp_Tb, где 1 = 1 AND Emp_Id_Pk = 'для типа данных int
Пожалуйста, помогите.
Вы пытаетесь объединить строку и целое число.
Вам нужно отличить @ID
как строку.
попробуйте:
SET @[email protected]+' AND Emp_Id_Pk=' + CAST(@ID AS NVARCHAR(10))
Попробуйте использовать
CONVERT(nvarchar(10),@ID)
Это похоже на литье, но менее дорого (с точки зрения времени)
Я столкнулся с той же проблемой, я удалил ограничение для рассматриваемого столбца, и это сработало для меня. Вы можете проверить папку Constraints.
У вас есть эта ошибка, потому что вы пытались преобразовать столбец DataType
из String
в int
, который является
leagal if and only if
у вас нет строки в этой таблице со строковым содержимым внутри этого столбца
просто убедитесь, что ваши ранее вставленные строки compatible with the new changes