Подтвердить что ты не робот

Ошибка конверсии при преобразовании значения nvarchar... в тип данных int

Я создал процедуру, описанную ниже:

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

Пожалуйста, помогите.

4b9b3361

Ответ 1

Вы пытаетесь объединить строку и целое число.
Вам нужно отличить @ID как строку.
попробуйте:

SET @[email protected]+' AND Emp_Id_Pk=' + CAST(@ID AS NVARCHAR(10))

Ответ 2

Попробуйте использовать

CONVERT(nvarchar(10),@ID)

Это похоже на литье, но менее дорого (с точки зрения времени)

Ответ 3

Я столкнулся с той же проблемой, я удалил ограничение для рассматриваемого столбца, и это сработало для меня. Вы можете проверить папку Constraints.

Захват: http://i.stack.imgur.com/9Wccz.png

Ответ 4

У вас есть эта ошибка, потому что вы пытались преобразовать столбец DataType из String в int, который является

leagal if and only if

у вас нет строки в этой таблице со строковым содержимым внутри этого столбца

просто убедитесь, что ваши ранее вставленные строки compatible with the new changes