在MS SQL Server 2K5中写的一个存储过程如下:
CREATE PROCEDURE [dbo].[GetRecentNews] @SchoolID int, @NewsType int, @PageSize tinyint, @Page intAS --分页 if(NewsType=0) SELECT TOP @PageSize ID,Title,UpdateTime FROM News WHERE AND ID NOT IN (SELECT TOP @PageSize*(@Page-1) ID FROM News WHERE ORDER BY UpdateTime DESC) ORDER BY UpdateTime DESC else SELECT TOP @PageSize ID,Title,UpdateTime FROM News WHERE AND AND ID NOT IN (SELECT TOP @PageSize*(@Page-1) ID FROM News WHERE AND ORDER BY UpdateTime DESC) ORDER BY UpdateTime DESCRETURN
GO 在SQL Server 2K5中没有问题,但到了Sql Server 2K中,却报错:服务器: 消息 170,级别 15,状态 1,过程 GetRecentNews,行 9第 9 行: 附近有语法错误。服务器: 消息 170,级别 15,状态 1,过程 GetRecentNews,行 10第 10 行: 附近有语法错误。服务器: 消息 170,级别 15,状态 1,过程 GetRecentNews,行 13第 13 行: 附近有语法错误。 晕!Sql Server 2K中写法如下:CREATE PROCEDURE [dbo].[GetRecentNews] @SchoolID int, @NewsType int, @PageSize int, @Page intAS --分页 declare @current int set @current= @PageSize*(@Page-1) if (@NewsType=0) exec('SELECT TOP ' + @PageSize +' ID,Title,UpdateTime FROM News WHERE SchoolID='+ @SchoolID +' AND ID NOT IN (SELECT TOP ' + @current +' ID FROM News WHERE ORDER BY UpdateTime DESC) ORDER BY UpdateTime DESC') else exec('SELECT TOP ' + @PageSize +' ID,Title,UpdateTime FROM News WHERE SchoolID='+ @SchoolID +' AND NewsType='+ @NewsType +' AND ID NOT IN (SELECT TOP ' + @current +' ID FROM News WHERE AND ORDER BY UpdateTime DESC) ORDER BY UpdateTime DESC') returnGO