语句写的复杂了,可以简写为如下create proc try_temp
  @mem_name varchar(6)=null,   --用户输入用户名
  @mem_card varchar(20)=null   --用户输入用户卡
as
Begin
Declare @selectstring varchar(100) --声明模糊组合查询字串,留待where子句中利用
Set @selectstring=IsNull(' and tablea.mem_name Like ''%'+@mem_name+'%''','')+IsNull(' and tableb.mem_card like ''%'+@mem_card+'%''','')
Set @selectstring='select * from tablea inner join tableb on tablea.mem_id=tableb.mem_id where 1=1'+@selectstring 
EXEC(@selectstring)
End
GO

解决方案 »

  1.   

    呵呵,我刚才刚把这个问题解决了,想来揭帖子,不过我是把所有的语句放在exec()中转换成字符串作的
    btw:Set @selectstring=IsNull(' and tablea.mem_name Like ''%'+@mem_name+'%''','')+IsNull(' and tableb.mem_card like ''%'+@mem_card+'%''','')
    对于这句,能组合成查询条件语句吗?
      

  2.   

    模糊查询的话,一般来说都是把sql语句存成字符串,然后执行exec(sql)吧?!我一直都是这样用的,有别的办法想同学习一下,呵呵
      

  3.   

    btw:Set @selectstring=IsNull(' and tablea.mem_name Like ''%'+@mem_name+'%''','')+IsNull(' and tableb.mem_card like ''%'+@mem_card+'%''','')
    对于这句,能组合成查询条件语句吗?可以的,你试试看。