日期:2014-05-17  浏览次数:20817 次

存储过程里多条件判断怎么写?紧急中
我存储过程里想实现多个传入参数的判断,里面有7个传入参数条件.
CREATE PROCEDURE sp_tbWasteSource_Search
(
    @sd   datetime,           //开始日期
    @ed   datetime,           //结束日期
    @con1 varchar(50),        
    @con2 varchar(30),        
    @con3 varchar(5),        
    @con4  varchar(10),       
    @con5 varchar(4)         
)
AS
declare @sql varchar(1000)
begin
  set @sql='SELECT * FROM table '
  if  @sd!='' and @ed!=''
    begin
      set @sql=@sql+' where CosID= '+cast(@CosID as varchar)
    end
  if (@CosName!= '' and @CosID!='')
    begin
      set @sql=@sql+'and'+'  CosName=  '+cast (@CosName as varchar )
    end
  else 
    if (@CosName!='' and @CosID ='')
      begin
        set @sql=@sql+'where '+'  CosName=  '+cast (@CosName as varchar )
      end
  if @CosCredit!= '' and (@CosID!='' or @CosName!='')
    begin
      set @sql=@sql+' and  CosCredit=  '+cast (@CosCredit as varchar )
    end
  else 
    if @CosCredit!='' and @CosID=''and @CosName=''
      set @sql=@sql+'where CosCredit= '+cast (@CosCredit as varchar )
  exec (@sql)
end
GO
以这样的形式来判断,我想实现,假如两个日期条件不输入,那么就以后面5个输入条件来判断。就是相当于以某一个输入条件做查询,假如输入条件了,那么就是以日期条件和5个条件里的某一个作为判断?
------最佳解决方案--------------------
发你代码,解决了 !
------其他解决方案--------------------
CREATE PROCEDURE sp_tbWasteSource_Search
(
  @sd datetime=null, //开始日期
  @ed datetime=null, //结束日期
  @con1 varchar(50),   
  @con2 varchar(30),   
  @con3 varchar(5),   
  @con4 varchar(10),   
  @con5 varchar(4)   
)
as 
begin
   select * from tb 
      where (@sd is null or date>@sd) and (@ed is null or date<@ed)
end

------其他解决方案--------------------
假如开始日期和结束日期输入了,又输入其中下面5个条件里的一个,该如何判断呢?
或者开始日期和结束日期不输入,只输入了5个条件里的其中一个,两个,三个,等等,该如何在存储过程里怎么写呢?:
------其他解决方案--------------------
create table #temp
(
卡号 varchar(100),