create procedure SearchEquip(@Search varchar(100)=Null)
as
exec('select 设备表.设备序号,表1.列1
   from 设备表 Left join 表1 on 设备表.序号=表1.序号 
     where '+@search+' or '+@search+' is Null')  
 ) 

解决方案 »

  1.   

    create procedure SearchEquip(@Search varchar(100)=Null)
    as
    exec('select 设备表.设备序号,表1.列1
       from 设备表 Left join 表1 on 设备表.序号=表1.序号 
         where '+@search+' or '+@search+' is Null')
      

  2.   

    create procedure SearchEquip(@Search varchar(100)=Null)
    as
    begin
        declare @s varchar(8000)
        set @s= ' select 设备表.设备序号,表1.列1'
               +' from 设备表 Left join 表1 on 设备表.序号=表1.序号' 
               +' where '+isnull(@search,'1=1')   
        exec(@s)
    end
    go
      

  3.   

    create proc SearchEquip(@Search varchar(100)=Null)
    as
    begin
        declare @s varchar(8000)
        set @s= ' select 表1.设备序号,表2.列2, 表3.名称
               +' from 设备表 表1,设备附件表 表2 ,(select @temp=@temp + 表2.名称 as 名称
               +' from 表2 where charindex(@search,表2.名称,1)<>0) as 表3 where     
               +'isnull(@search,'1=1') and charindex(@search,表2.名称,1)<>0'
        exec(@s)
    end