您的位置:首页 > 数据库 > SQL

一个分页取数据的存储过程

2010-10-20 17:56 381 查看
sqlserver里一个用于分页取数据的存储过程,希望大家多多指教

  

CREATE PROCEDURE dbo.Gy_GetPageRecord
@tbName SYSNAME,
@colKey SYSNAME,
@colSelect NVARCHAR(1000),
@countPerPage INT,
@pageIndex INT,
@sortSql NVARCHAR(1000),
@whereSql NVARCHAR(1000)
AS
DECLARE @sql NVARCHAR(4000)
IF LTRIM(RTRIM(@sortSql))<>'' SET @sortSql=' ORDER BY '+@sortSql
IF LTRIM(RTRIM(@whereSql))=''
 SET @whereSql='1=1'
ELSE
 SET @whereSql='('+@whereSql+')'
SET @sql='SELECT TOP '+CAST(@countPerPage AS NVARCHAR(10))
       +' '+@colSelect+' FROM '+@tbName+' WHERE '+@colKey+' NOT IN
  (SELECT TOP '+CAST(@countPerPage*(@pageIndex-1) AS NVARCHAR(10))
  +' '+@colKey+' FROM '+@tbName+' WHERE '+@whereSql+@sortSql
  +') AND '+@whereSql+@sortSql
EXEC(@sql)
SET @sql='SELECT CEILING(CAST(COUNT(*) AS DECIMAL(18,10))/CAST('
       +CAST(@countPerPage AS NVARCHAR(10))+' AS DECIMAL(18,10))) FROM '
       +@tbName+' WHERE '+@whereSql
EXEC(@sql)
SET @sql='SELECT COUNT(*) FROM '+@tbName+' WHERE '+@whereSql
EXEC(@sql)
GO
 
 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  存储 sql sqlserver go