昨天写一个存储过程保存时提醒top附近有语法错误 ALTER PROCEDURE dbo.titleSelectWork @pageSize int, @userguid varchar(50) AS update title set userguid=@userguid where AutoID in ( select top @pageSize AutoID from title where userguid=''0'' ) RETURN 经朋友提醒top后面不能接变量 有两种方法解决此问题 一、sql语句拼接执行 二、直接exec执行(附代码如下) ALTER PROCEDURE dbo.titleSelectWork @pageSize int, @userguid varchar(50) AS exec ( 'update title set userguid='+@userguid+'where AutoID in ( select top '+@pageSize+' AutoID from title where userguid=''0'' )' ) RETURN