日期:2014-05-18  浏览次数:20482 次

使用 sp_executesql出现列名无效
ALTER   PROCEDURE   selectmessage
(
@tablename   nchar(10),
@id   bigint   ,
        @time   datetime,
@name_user   nchar(10)
)
AS
DECLARE       @SqlStr     NVARCHAR(1000)      
SET       @SqlStr=N 'select   id   ,status,smname,rmname,message   from '
+CONVERT(NVARCHAR(100),@tablename)
+N 'where     time> '+ ' ' ' '+CONVERT(NVARCHAR(100),@time)+ ' ' ' '
+N 'and   id> '+ ' ' ' '+CONVERT(NVARCHAR(100),@id)+ ' ' ' '
+N '   and
          (status= '+ ' ' ' '+N 'false '+ ' ' ' '+N '   or   rmname= '+ ' ' ' '+CONVERT(NVARCHAR(10),@name_user)+ ' ' ' '+N '
            or   smname= '+ ' ' ' '+CONVERT(NVARCHAR(10),@name_user)+ ' ' ' '+N 'or   rmname   like   '+ ' ' ' '+N '大家%   '+ ' ' ' '+N ') '

  EXEC   sp_executesql   @SqlStr
                                                                                                                                 
/*   SET   NOCOUNT   ON   */  
RETURN  


请问怎么修改?


------解决方案--------------------
...from '+...+ ' where ...
缺少空格,如果不是这样的话,可能是你传入的表没有这些字段