Solved

Dynamic SQL statement

Posted on 2011-03-21
9
241 Views
Last Modified: 2012-05-11
How can I build a dynamic SQL statement without inserting the SQL into a variable.

For example the store procedure has a variable called @Sex.

This is my main SQL statement:

Select * FROM MYTABLE
WHERE SSN = @SSN AND AGE=@AGE AND

I would build the rest of the SQL statement using the variable @SEX

@SEX (if male)
TVSHOWS=@TVSHOWS AND RACING=@RACING AND NASCAR=@NASCAR

@SEX (if Female)
SOAPS=@SOAPS AND COOKING=@COOKING AND CHILDREN=@CHILDREN


0
Comment
Question by:Internet_Engineer
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
9 Comments
 
LVL 5

Expert Comment

by:KGNickl
ID: 35182854
Make separate queries in a stored procedure. Then just pass in the sex of the person when calling the stored procedure and it will run the correct query for you.

IF @SEX = "MALE"
TVSHOWS=@TVSHOWS AND RACING=@RACING AND NASCAR=@NASCAR

IF @SEX = "MALE"
SOAPS=@SOAPS AND COOKING=@COOKING AND CHILDREN=@CHILDREN

0
 
LVL 55

Assisted Solution

by:Huseyin KAHRAMAN
Huseyin KAHRAMAN earned 250 total points
ID: 35183174
try this syntax:

Select * FROM MYTABLE
WHERE SSN = @SSN AND AGE=@AGE AND
and (
case  
when @sex='M' and TVSHOWS=@TVSHOWS AND RACING=@RACING AND NASCAR=@NASCAR then 1
when @sex='F' and SOAPS=@SOAPS AND COOKING=@COOKING AND CHILDREN=@CHILDREN then 1
else 0
end
) = 1




0
 
LVL 41

Accepted Solution

by:
Sharath earned 250 total points
ID: 35183296
Do you really need a dynamic sql for this? You can try like this.
SELECT * 
  FROM MYTABLE 
 WHERE SSN = @SSN 
       AND AGE = @AGE 
       AND ((@SEX = 'male' 
             AND TVSHOWS = @TVSHOWS 
             AND RACING = @RACING 
             AND NASCAR = @NASCAR) 
             OR (@SEX = 'Female' 
                 AND SOAPS = @SOAPS 
                 AND COOKING = @COOKING 
                 AND CHILDREN = @CHILDREN))

Open in new window

0
Visualize your virtual and backup environments

Create well-organized and polished visualizations of your virtual and backup environments when planning VMware vSphere, Microsoft Hyper-V or Veeam deployments. It helps you to gain better visibility and valuable business insights.

 

Author Comment

by:Internet_Engineer
ID: 35327419
Here is the solution:

(@SEX = 'male' AND (TVSHOWS=@TVSHOWS AND RACING=@RACING AND NASCAR=@NASCAR))

(@SEX = 'female' AND (TVSHOWS=@TVSHOWS AND RACING=@RACING AND NASCAR=@NASCAR))
0
 
LVL 41

Expert Comment

by:Sharath
ID: 35329030
Solution was provided. Not sure why the asker wants to close this question without accepting any expert's post. In fact the solution posted by asker is wrong when checked with what he/she asked.
0
 
LVL 41

Expert Comment

by:Sharath
ID: 35330746
My recommendation is #3 and I suggest the posts http:#a35183296 and http:#a35183174 as answers.
0
 
LVL 1

Expert Comment

by:modus_operandi
ID: 35390703
Starting auto-close process to implement the recommendations of the participating Expert(s).
 
modus_operandi
EE Admin
0

Featured Post

On Demand Webinar - Networking for the Cloud Era

This webinar discusses:
-Common barriers companies experience when moving to the cloud
-How SD-WAN changes the way we look at networks
-Best practices customers should employ moving forward with cloud migration
-What happens behind the scenes of SteelConnect’s one-click button

Question has a verified solution.

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

Ever needed a SQL 2008 Database replicated/mirrored/log shipped on another server but you can't take the downtime inflicted by initial snapshot or disconnect while T-logs are restored or mirror applied? You can use SQL Server Initialize from Backup…
Recently we ran in to an issue while running some SQL jobs where we were trying to process the cubes.  We got an error saying failure stating 'NT SERVICE\SQLSERVERAGENT does not have access to Analysis Services. So this is a way to automate that wit…
Via a live example, show how to shrink a transaction log file down to a reasonable size.
Via a live example, show how to setup several different housekeeping processes for a SQL Server.

688 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