У меня есть хранимая процедура, которая возвращает почтовые индексы в указанном радиусе.Аргументы:
ALTER PROCEDURE [dbo].[proximitySearch]
@proximity int = 0,
@country varchar (2) = NULL,
@city varchar (180) = NULL,
@state varchar (100) = NULL,
@stateAbr varchar (2) = NULL,
@postalCode varchar(20) = NULL
AS...
В процедуре первый запрос должен выбрать одну запись (или ни одной записи), которая соответствует тому, что было передано, и назначить широту / долготу локальным переменным, как я началнапишите ниже:
SELECT TOP 1 @Longitude = Longitude, @Latitude = Latitude
FROM PostalCodes
WHERE ...
Вот где я озадачен ... Предложение WHERE должно быть условным в зависимости от того, что было передано. Некоторые аргументы (или все они) могут быть NULL, и я неЯ не хочу использовать их в запросе, если они есть.
Я думал так:
SELECT TOP 1 @Longitude = Longitude, @Latitude = Latitude
FROM PostalCodes
WHERE Longitude IS NOT NULL
AND CASE WHEN @postalCode IS NOT NULL THEN PostalCode = @postalCode ELSE 1 END
... но это не работает.Как это обычно делается?(Я определенно не опытный парень TSQL !!!) Заранее спасибо!