Create Proc GETCAT_SIMPLE_TOP_WITHCOMPANYID_BYID @byID varchar(10), @subcontent varchar(10), @listCount varchar(10) As begin declare @sql varchar(5000) declare @where varchar(500) declare @commentURL varchar(500) if @listCount is null return set @commentURL = ' ''commentURL'' = case when cat=886 and company_id is not null then ''http://www.jj0595car.cn/read.asp?tid=''+cast(comment_target as varchar(10))+''&cid=''+cast(company_id as varchar(10)) when cat=886 and company_id is null then ''http://www.jj0595car.cn/read.asp?tid=''+cast(comment_target as varchar(10)) else ''/read.asp?tid=''+cast(comment_target as varchar(10)) end ' if @byID = '' or @byID = '0' set @where = 'where comment_backupcontent is null ' else set @where = 'where comment_backupcontent is null and articleClass.sortPath like ''%,'+@byID+',%'' ' if @subcontent > 0 set @sql = N'select top ' +@listCount +' substring(commentDB.comment_content,0,'+@subcontent+') as comment_content,comment_target,company_id,'+@commentURL+' from commentDB left join article on commentDB.comment_target = article.id left join articleClass on article.cat = articleClass.id left join companyDB on article.posterID = company_property '+@where+' order by commentDB.comment_time desc,commentDB.comment_id' else set @sql = N'select top ' +@listCount +' comment_content,comment_target,company_id,'+@commentURL+' from commentDB left join article on commentDB.comment_target = article.id left join articleClass on article.cat = articleClass.id left join companyDB on article.posterID = company_property '+@where+' order by commentDB.comment_time desc,commentDB.comment_id' exec (@sql) return end Go 原来的单引号 ' 用 两个单引号代替 '' 这个不是双引号. exec (@sql) 这里要用 () 将动态sql语句包起来.