create proc pic_search
(
    @pic_ear varchar(50),
    @colum varchar(50)
)
if @colum='riqi'
 
exec('select * from pic_upload where  convert(char(10),date,120)>'"+@pic_ear+"')else 
    exec('select * from pic_upload where ' + @colum + '=''' + @pic_ear + '''')
GO
我要实现的是当colum输入的参数为riqi时,就执行exec('select * from pic_upload where  convert(char(10),date,120)>'"+@pic_ear+"')这条语句,如果是其它就执行exec('select * from pic_upload where ' + @colum + '=''' + @pic_ear + '''')

解决方案 »

  1.   

    少了个AS,
    其它的SELECT检查一下~~~create proc pic_search
    (
        @pic_ear varchar(50),
        @colum varchar(50)
    )
    as
    if @colum='riqi'
     
    select ('select * from pic_upload where  convert(char(10),date,120)>'"+@pic_ear+"')else 
        select ('select * from pic_upload where ' + @colum + '=''' + @pic_ear + '''')
    GO
      

  2.   

    create proc pic_search
    (
        @pic_ear varchar(50),
        @colum varchar(50)
    )
    declare @sqlstr varchar(1000)
    set @sqlstr='select * from pic_upload '
    if @colum='riqi'
    exec(@sqlstr+'where convert(char(10),date,120)'+@pic_ear)
    else
         exec(@sqlstr + @colum + '='+ @pic_ear)
    GO
      

  3.   

    select ('select * from pic_upload where  convert(char(10),date,120)>'"+@pic_ear+"')
    上面的双引号错了~~~create proc pic_search
    (
        @pic_ear varchar(50),
        @colum varchar(50)
    )
    as
        if @colum='riqi' 
            select ('select * from pic_upload where convert(char(10),date,120)>'''+@pic_ear+'''')
        else 
            select ('select * from pic_upload where ' + @colum + '=''' + @pic_ear + '''')
    go