日期:2014-05-19  浏览次数:20539 次

怎么简化这个sql语句?
有下面这么个存储过程,因为参数(@EntrustStyle)的不同,导致条件表达式(WHERE..)也不同,如下所示.这里用了4个IF   ELSE解决问题的,我想简化到一个SQL语句,请问如何实现??谢谢.

  /*       委托单       */
CREATE   proc   up_CheckEtrust
  @EntrustStyle   varchar(255)   =   ' ',           --委托方式(有:RT、UT、PT、MT)
  @FieldName     varchar(255)= ' '                     --字段名称  
AS

IF   @FieldName= 'RT_check '  
SELECT   *
FROM   FROM   info_weldlist
                WHERE   RT_check   =   '√ '  

ELSE
IF   @FieldName= 'UT_check '  
SELECT   *
FROM   FROM   info_weldlist
                WHERE   UT_check   =   '√ '  


ELSE
IF   @FieldName= 'PT_check '  
SELECT   *
FROM   FROM   info_weldlist
                WHERE   PT_check   =   '√ '  


ELSE
IF   @FieldName= 'MT_check '  
SELECT   *
FROM   FROM   info_weldlist
                WHERE   MT_check   =   '√ '  


------解决方案--------------------
CREATE proc up_CheckEtrust
@EntrustStyle varchar(255) = ' ', --委托方式(有:RT、UT、PT、MT)
@FieldName varchar(255)= ' ' --字段名称
AS

exec( 'select * from info_weldlist where '+@FieldName+ '= ' '√ ' ' ')