MSSQL分页存储过程

香水坏坏 发表于 2007-7-7 [Database]
SQL代码
  1. 自己改写的一个分页存储过程   
  2. CREATE PROC Paging   
  3. (   
  4. @pageSize int,   
  5. @pageIndex int,   
  6. @pageField nvarchar(32),   
  7. @countTotal bit=1,   
  8. @fieldQuery nvarchar(512),   
  9. @tableQuery nvarchar(512),   
  10. @whereQuery nvarchar(2048),   
  11. @orderQuery nvarchar(512)   
  12. )   
  13. AS  
  14. DECLARE @bdate Datetime   
  15. SET @bdate = getdate()   
  16. DECLARE @itemcount int  
  17. SET @itemcount=@pageIndex*@pageSize   
  18. DECLARE @itemlowwer int  
  19. SET @itemlowwer=(@pageIndex-1)*@pageSize   
  20. DECLARE @cmd nvarchar(3062)   
  21.   
  22. IF @pageIndex=1   
  23. SET @cmd =’SELECT TOP ‘+CAST(@pageSize AS NVARCHAR)+’ ‘+@fieldQuery+’ FROM ‘+@tableQuery+’ WHERE ‘+@whereQuery+’ ORDER BY ‘+@orderQuery   
  24. ELSE  
  25. SET @cmd=’SELECT ‘+@fieldQuery+’ FROM ‘+@tableQuery+’ WHERE ‘+@pageField+’ IN (SELECT TOP ‘+CAST(@itemcount as nvarchar)+’ ‘+@pageField+’ FROM ‘+@tableQuery+’ WHERE ‘+@whereQuery+’ ORDER BY ‘+ @orderQuery+’)   
  26. AND ‘+@pageField+’ NOT IN (SELECT TOP ‘ +CAST(@itemlowwer as nvarchar)+’ ‘+@pageField+’ FROM ‘+@tableQuery+’ WHERE ‘+@whereQuery+’ ORDER BY ‘+ @orderQuery+’)’   
  27. –print @cmd   
  28. EXEC(@cmd)   
  29.   
  30. SELECT DATEDIFF( ms , @bdate , getdate() )   
  31.   
  32. IF @countTotal =1   
  33. BEGIN  
  34. SET @cmd = ‘SELECT COUNT( 0) FROM ‘+@tableQuery+’ WHERE ‘+@whereQuery   
  35. EXEC(@cmd)   
  36. END  
  37. GO   
  38.   
1097 1 标签:MSSQL 存储过程 分页 
访客评论
  • DBA    [2008-3-6]
    那如果是从几个表中读取数据的话呢?
发表评论
  • 你的姓名:
  • 你的网站:
  •   EMAIL:   
  • 评论内容:
  • 私人