IF EXISTS(SELECT name FROM sysobjects WHERE name='pagetest' AND type='p')     
DROP PROCEDURE pagetest 
GO
Create proc pagetest 
AS
Declare
@sql varchar(100)
SET @sql = 'SELECT * FROM(SELECT *,(Row_Number() OVER(ORDER BY id ASC)) AS rowid from adminInfo) T where rowid between 1 and 5'
EXEC(@sql)
GO
EXEC pagetest 
单独运行SELECT * FROM(SELECT *,(Row_Number() OVER(ORDER BY id ASC)) AS rowid from adminInfo) T where rowid between 1 and 5不会出问题调用这个存储过程就提示在应使用条件的上下文(在 'b' 附近)中指定了非布尔类型的表达式。 应该就是between那里