У вас не указана размерность входных параметров
NVARCHAR
.
Указал - не помогло.
Проверьте входное значение.
Конечно нужно использовать отладчик. Сермяжная проверка:
DECLARE @cityNameTest nvarchar(100)
SET @cityNameTest = N'Название города'
SELECT 1 WHERE @cityName = @cityNameTest
N
перед параметром означает не UNICODE, а функцию, а чём указано в ошибке.
Если неопределённость осталась, нужно смотреть параметры сортировки
Cities.Name
, который влияет на сравнение строк.
COLLATE.
Дополнение. Поскольку вы передаёте город не кодом, а названием, нужно обрабатывать его отсутствие в базе:
SELECT @CityID = Id FROM Cities WHERE [Name] = @cityName
IF @CityID IS NULL BEGIN
INSERT Cities([Name]) VALUE (@cityName)
SET @CityID = IDENT_CURRENT('Cities')
END
В
INSERT [Hotels]
нет поля кода города.