Я менял какую-то хранимую процедуру, и случилось нечто странное.
IF EXISTS (SELECT * FROM TABLE1
WHERE varID = (CAST(@v_varID AS int) + 1))
UPDATE TABLE2
SET id = (CAST(@v_varID AS int) + 1)
WHERE category = @v_category
ELSE
UPDATE CATEGORY
SET id = (CAST(@v_varID AS int) + 1)
WHERE category = @v_category
Это был мой код.Поскольку @v_varID
имеет тип varchar
, мне нужно было преобразовать его в int
, чтобы увеличить id
.Проблема заключалась в том, что когда @v_varID
конвертируется, он попадает в IF EXISTS
.Когда я просто обновляю его без EXISTS
, он работает так, как я ожидал.
ERROR_LOG
показывает другой неконвертируемый @v_varID
в таблице не может конвертировать в int.Я передаю только '800'
или какое-то целое число varchar-ed, поэтому оно должно работать, но почему-то оно не проходит IF EXISTS
(оно обновляется, если я избавляюсь от IF EXISTS
).Я просто использовал другой способ заставить его работать, но мне любопытно, почему.
Спасибо!