try
exec('select '+ @fields+'  from '+ @tab_name+'  where '+ @field+'<'''+@keyword +''' order by id desc')

解决方案 »

  1.   

    这样:
    CREATE PROCEDURE sp_select_tab 
        @tab_name varchar(150),
        @fields varchar(150),
        @field varchar(50),
        @keyword varchar(100),
       @d_flag int
    as
        if(@d_flag=1)  
            exec('select '+ @fields+'  from '+ @tab_name+'  where ' +@field+'<'''+@keyword+ ''' order by id asc')
    else 
           exec('select '+ @fields+'  from '+ @tab_name+'  where '+ @field+'<'''+@keyword +''' order by id desc')
    GO
      

  2.   

    忘了补充
    如果要安装时间类型做比较,而不是字符类型,应该这样改
    CREATE PROCEDURE sp_select_tab 
        @tab_name varchar(150),
        @fields varchar(150),
        @field varchar(50),
        @keyword varchar(100),
       @d_flag int
    as
        if(@d_flag=1)  
            exec('select '+ @fields+'  from '+ @tab_name+'  where cast(' +@field+' as datetime)<'''+@keyword+ ''' order by id asc')
    else 
           exec('select '+ @fields+'  from '+ @tab_name+'  where cast('+ @field+' as datetime)<'''+@keyword +''' order by id desc')
    GO
      

  3.   

    to pbsql(风云):
    强!
    问题解决了,
    将 @keyword='2004-8-29'
    改为@keyword='"2004-8-29"'就OK了。
    谢谢了。
    结帖了。
      

  4.   

    这里还是没有人理:
    http://community.csdn.net/Expert/topic/3316/3316083.xml?temp=.2183496
    入来UP一下,连这边也结了。