DECLARE @CityId AS VARCHAR(20) = NULL
DECLARE @CityList AS VARCHAR(20) = '1, 2, 3, 4, 5';
IF (@CityId IS NULL)
SET @CityId = @CityList;
SELECT *
FROM City
WHERE CityID IN (@CityId)
У меня есть хранимая процедура, которая перечисляет все города. Но если параметр задан, тогда он должен отображать только определенную информацию об этом городе. CityID в City Table - bigint. Когда CityId остается null, он дает ошибку, говоря «Ошибка преобразования типа данных varchar в bigint. 'SELECT Города в хранимой процедуре
Примечание: Если я построю следующий запрос, все будет выглядеть нормально.
SELECT * FROM City WHERE CityID IN (1, 2, 3, 4, 5)
, но если я продолжу со следующим запросом, это даст ошибку.
SELECT * FROM City WHERE CityID IN ('1, 2, 3, 4, 5')
Я предполагаю, что в этом случае я должен строить массив int, но я не знаю, как это сделать. Любые предложения?