I’ve got a stored procedure that returns postal codes within a specified radius. The arguments are
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...
In the proc, the first query needs to select a single record (or no record) that matches whatever was passed in and assign the lat/long to local variables, as I started to write below:
SELECT TOP 1 @Longitude = Longitude, @Latitude = Latitude
FROM PostalCodes
WHERE ...
This is where I get stumped… the WHERE clause needs to be conditional based on what was passed in. Some arguments (or all of them) can be NULL, and I don’t want use them in the query if they are.
I was thinking along the lines of:
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
…but this doesn’t work. How is something like this typically done? (I’m definitely not a seasoned TSQL guy!!!) Thanks in advance!
There is more than one way of implementing that kind of logic:
1)
2)