Go Premium for a chance to win a PS4. Enter to Win

x
  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 178
  • Last Modified:

Assistance with stored procedure setting a blank variable to retrieve all

I have a stored procedure with variables being sent to it such as dates, facility, employees, which are used in the final SELECT statement (See snippet). Sometimes an Employee or Facility is not given, because we want to see all employees at a given Facility.

I have tried setting the value of the variable @Employee = '%' but it will not return all. How can I get it to show all if the value of this variable is left blank?

Thanks
ALTER   PROC [dbo].[spNC_BookingWizard]
	@StartDate varchar(10) = '1/1/1900',
	@EndDate varchar(10) = '1/1/2010',
	@Employee varchar(200) = '',
	@Facility varchar(200) = '',
	@Status varchar(200) = '',
	@test bit = 0
AS
 
SET NOCOUNT ON
 
DECLARE @dtStart datetime
DECLARE @dtEnd datetime
 
 
SET @dtStart = CONVERT(datetime, @StartDate)
SET @dtEnd = DATEADD(dd, 1, DATEADD(dd, 0, CONVERT(datetime, @EndDate)))
 
...........
 
SELECT * FROM #tmpBook 
WHERE StartDate_date >= @dtStart AND StartDate_date <= @dtEnd 
AND Facility = @Facility
AND EmpName = @Employee
AND  BookingStatus = @Status

Open in new window

0
NursingCorp
Asked:
NursingCorp
1 Solution
 
Guy Hengel [angelIII / a3]Billing EngineerCommented:
if the column value is NULL, you would have to make the condition WHERE yourcol IS NULL.

for you, this syntax should work:
SELECT * FROM #tmpBook 
WHERE StartDate_date >= @dtStart AND StartDate_date <= @dtEnd 
AND ( Facility = @Facility OR @Facility = '%' )
AND ( EmpName = @Employee OR @Employee = '%' )
AND  BookingStatus = @Status

Open in new window

0
 
BrandonGalderisiCommented:
angelIII is absolutely correct that it should be NULL for your default parameter.  Here's how I do this sort of thing (optional parameters)
ALTER   PROC [dbo].[spNC_BookingWizard]
        @StartDate datetime = null,
        @EndDate datetime = null,
        @Employee varchar(200) = null,
        @Facility varchar(200) = null,
        @Status varchar(200) = null,
        @test bit = 0
AS
 
SET NOCOUNT ON
 
...........
 
SELECT * FROM #tmpBook 
WHERE (@StartDate is null  or StartDate_date >= @StartDate)
  AND (@EndDate is null    or StartDate_date <= @EndDate)
  AND (@Facility is null   or Facility = @Facility)
  AND (@employee is null   or EmpName = @Employee)
  AND (@Status is null     or BookingStatus = @Status)

Open in new window

0
 
NursingCorpAuthor Commented:
Copied and pasted...worked perfect. Thanks
0

Featured Post

Free Tool: Path Explorer

An intuitive utility to help find the CSS path to UI elements on a webpage. These paths are used frequently in a variety of front-end development and QA automation tasks.

One of a set of tools we're offering as a way of saying thank you for being a part of the community.

Tackle projects and never again get stuck behind a technical roadblock.
Join Now