Please start any new threads on our new
site at https://forums.sqlteam.com. We've got lots of great SQL Server
experts to answer whatever question you can come up with.
Author |
Topic |
subhankar02dey
Starting Member
4 Posts |
Posted - 2010-10-21 : 09:23:49
|
I have a procedure which is-> ============================================================create procedure procedure1(@city varchar(20),@department varchar(20),@name varchar(20))asbegindeclare @a varchar(50);declare @b varchar(50);declare @c varchar(50);declare @d varchar(500);if @city=''set @a='';elseset @a='where emp_city='+@city;if @department=''set @b='';elseset @b='and emp_department='+@department;if @name=''set @c='';elseset @c='and emp_name='+@name;set @d='select * from employees where'+@a+@b+@c;---???????????????????????????WHAT TO DO TO EXECUTE @d?returnend;===========================================================Now in the procedure, @d holds a select query but it is in varchar format. I cannot execute that as a query in the procedure.How to execute the query stored in @d?pls help. |
|
xholax
Starting Member
12 Posts |
Posted - 2010-10-21 : 11:04:04
|
try thisEXEC(@d) |
 |
|
webfred
Master Smack Fu Yak Hacker
8781 Posts |
Posted - 2010-10-21 : 11:10:39
|
Do a print to see the statement!What I see: the WHERE would be listed twice.First time in 'select * from employees where' and second time in @a No, you're never too old to Yak'n'Roll if you're too young to die. |
 |
|
Ifor
Aged Yak Warrior
700 Posts |
Posted - 2010-10-21 : 13:17:58
|
[code]SET ANSI_NULLS, QUOTED_IDENTIFIER ONGOCREATE PROCEDURE procedure1( @city varchar(20) ,@department varchar(20) ,@name varchar(20))ASSET NOCOUNT ONDECLARE @SQL nvarchar(4000)SELECT @SQL = 'SELECT * FROM employees WHERE 1=1' + CASE WHEN LEN(COALESCE(@city, '')) > 0 THEN ' AND emp_city = @city' ELSE '' END + CASE WHEN LEN(COALESCE(@department, '')) > 0 THEN ' AND emp_department = @department' ELSE '' END + CASE WHEN LEN(COALESCE(@name, '')) > 0 THEN ' AND emp_name = @name' ELSE '' ENDEXEC sp_executesql @SQL ,N'@city varchar(20), @department varchar(20), @name varchar(20)' ,@city, @department, @nameGO[/code] |
 |
|
subhankar02dey
Starting Member
4 Posts |
Posted - 2010-10-21 : 14:03:43
|
thanks xholax |
 |
|
|
|
|
|
|