首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > asp.net >

SQL存储过程,需要根据传入的参数,更改where语句的条件,请问

2011-12-18 
SQL存储过程,需要根据传入的参数,更改where语句的条件,请教大虾假设分别传入参数为1,2,3时CreateProcedure

SQL存储过程,需要根据传入的参数,更改where语句的条件,请教大虾
假设分别传入参数为1,2,3时
Create   Procedure     X
@type   char(1),

as
    if(@type== '1 ')         Select   id1,id2,id3     from     Table_A     WHERE   id4   like   '% 'A ' '% '  
if(@type== '2 ')         Select   id1,id2,id3     from     Table_A     WHERE   id4   like   '% 'B ' '% '
if(@type== '3 ')         Select   id1,id2,id3     from     Table_A     WHERE   id4   like   '% 'C ' '% '
本来这样也行,可是我的select非常长,中间夹杂inner   join   ,cross   join等语句,因此想把条件选择放到         like后面,可是这样写却报错,请大侠指点下
Select   id1,id2,id3     from     Table_A     WHERE   id4   like     (if(@type== '1 ')     return     '% 'A ' '% '      
                                                                                                                                                        else   if(@type== '2 ')       return   '% 'B ' '% '
                                                                                                                                                      else   if(@type== '3 ')       return   '% 'C ' '% ')



[解决办法]
Create Procedure X
@type char(1)
as
declare @sql nvarchar(4000)
set @sql = 'Select id1,id2,id3 from Table_A WHERE id4 like % '
if(@type= '1 ')
set @sql = @sql + 'A ' + '% '
if(@type= '2 ')
set @sql = @sql + 'B ' + '% '
if(@type= '3 ')
set @sql = @sql + 'C ' + '% '
set @sql = @sql + ' ' --这里加上一些语句,例如你要加的like
execute sp_executesql @sql

热点排行