create proc P_mem_order
@mem_id bigint ,
@state varchar(1),
@key varchar(20)=null,
@send_time datetime=null
declare @str varchar(500)
set @str=' where state='+''''+@state''''+' and m.member_id='+''+@mem_id+''
if @key is not null
begin 
@str=@str+' and order_code='+''''+@key''''+' or customer_name like %'''+@key+'''%'
endif @send_time is not null
begin
@str=@str+' and send_time='+''''+@send_time+''''
endexec('select o.order_code,o.customer_name,s.sta_title,o.send_time, o.result from T_order as o  
join T_member as m on o.member_id=m.member_id join T_head as h on m.head_id=h.head_id 
join T_station s on h.head_id=s.head_id '+@str+' order by o.send_time desc' )这里面哪里有错误,哪位大哥帮忙看看

解决方案 »

  1.   


    create proc P_mem_order 
      @mem_id bigint , 
      @state varchar(1), 
      @key varchar(20)=null, 
      @send_time datetime=null 
    as
    declare @str varchar(500) 
    set @str=' where state='''+@state+''' and m.member_id='''+@mem_id+'''if @key is not null 
      @str=@str+' and (order_code='''+@key+''' or customer_name like ''%'+@key+'%'')' if @send_time is not null 
      @str=@str+' and send_time='''+@send_time+''' declare @sql varchar(1000)
    set @sql='
    select o.order_code,o.customer_name,s.sta_title,o.send_time, o.result 
    from T_order as o  
    join T_member as m on o.member_id=m.member_id 
    join T_head as h on m.head_id=h.head_id 
    join T_station s on h.head_id=s.head_id '+@str+' 
    order by o.send_time desc' exec(@sql)
      

  2.   

    create proc P_mem_order 
      @mem_id bigint , 
      @state varchar(1), 
      @key varchar(20)=null, 
      @send_time datetime=null 
    as
    declare @str varchar(500) 
    set @str=' state='''+@state+''' and m.member_id='''+@mem_id+''''if @key is not null 
      @str=@str+' and (order_code='''+@key+''' or customer_name like ''%'+@key+'%'')' if @send_time is not null 
      @str=@str+' and send_time='''+@send_time+''''declare @sql varchar(1000)
    set @sql='
    select o.order_code,o.customer_name,s.sta_title,o.send_time, o.result 
    from T_order as o  
    join T_member as m on o.member_id=m.member_id 
    join T_head as h on m.head_id=h.head_id 
    join T_station s on h.head_id=s.head_id 
    where '+@str+' 
    order by o.send_time desc' exec(@sql)
      

  3.   

    create proc P_mem_order 
    @mem_id bigint , 
    @state varchar(1), 
    @key varchar(20)=null, 
    @send_time datetime=null 
    as
    declare @str varchar(500) 
    set @str=' where state='+''''+@state+''''+' and m.member_id='+''''+cast(@mem_id as varchar(10))+'''' 
    if @key is not null 
    begin 
    set @str=@str+' and order_code='+''''+@key+''''+' or customer_name like %'''+@key+'''%' 
    end if @send_time is not null 
    begin 
    set @str=@str+' and send_time='+''''+@send_time+'''' 
    end exec('select o.order_code,o.customer_name,s.sta_title,o.send_time, o.result from T_order as o  
    join T_member as m on o.member_id=m.member_id join T_head as h on m.head_id=h.head_id 
    join T_station s on h.head_id=s.head_id '+@str+' order by o.send_time desc' ) 
      

  4.   

    xxmsuper
    太厉害了,谢谢你了,可惜我没分,呵呵