Solved

Assistance with stored procedure setting a blank variable to retrieve all

Posted on 2008-10-28
3
165 Views
Last Modified: 2010-04-21
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
Comment
Question by:NursingCorp
3 Comments
 
LVL 142

Expert Comment

by:Guy Hengel [angelIII / a3]
ID: 22827351
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
 
LVL 39

Accepted Solution

by:
BrandonGalderisi earned 500 total points
ID: 22827372
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
 

Author Closing Comment

by:NursingCorp
ID: 31510994
Copied and pasted...worked perfect. Thanks
0

Featured Post

3 Use Cases for Connected Systems

Our Dev teams are like yours. They’re continually cranking out code for new features/bugs fixes, testing, deploying, testing some more, responding to production monitoring events and more. It’s complex. So, we thought you’d like to see what’s working for us.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

Title # Comments Views Activity
mySql Syntax 7 44
Need help subtracting a value within my script 7 42
grouping logic 6 49
Join multiple pivot queries 2 8
'Between' is such a common word we rarely think about it but in SQL it has a very specific definition we should be aware of. While most database vendors will have their own unique phrases to describe it (see references at end) the concept in common …
I'm trying, I really am. But I've seen so many wrong approaches involving date(time) boundaries I despair about my inability to explain it. I've seen quite a few recently that define a non-leap year as 364 days, or 366 days and the list goes on. …
This Micro Tutorial demonstrates using Microsoft Excel pivot tables, how to reverse engineer competitors' marketing strategies through backlinks.
As a trusted technology advisor to your customers you are likely getting the daily question of, ‘should I put this in the cloud?’ As customer demands for cloud services increases, companies will see a shift from traditional buying patterns to new…

867 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

22 Experts available now in Live!

Get 1:1 Help Now