享受.NET
.NET的兄弟们,来吧,GO GO GO

09年写过一次分页存储过程,今天偶然发现,以为丢了,,拿出来,共享下,以后也供自己使用:

 1 set ANSI_NULLS ON
 2 set QUOTED_IDENTIFIER ON
 3 go
 4 
 5 -- =============================================
 6 -- Author:        ZhangZF
 7 -- Create date: 02/24/2009    00:49
 8 -- Description:    第一次使用存储过程写分页程序,暂定为V1.0,以后会多加修正.在此深深感谢史向平大哥的鼎力相助,感谢!
 9 -- =============================================
10 ALTER PROCEDURE [dbo].[PROC_PAGE]
11     @ROWCOUNT        INT=0 OUTPUT,        --总记录数
12     @PAGEINDEX        INT=1,                --页索引
13     @PAGESIZE        INT=10,                --单页显示记录数
14     @TYPE            NVARCHAR(10)=N'ASC',--排序类型    ASC:正序 DESC:倒序
15     @TABLENAME        NVARCHAR(50),        --查询表名称
16     @COLUMN            NVARCHAR(20)=N'ID'    --排序字段
17 AS
18 BEGIN
19     DECLARE @MOD INT,@BEGINROW INT,@ENDROW INT
20     DECLARE @SQL NVARCHAR(2000)
21     SELECT @BEGINROW=(@PAGEINDEX-1)*@PAGESIZE+1
22     SELECT @ENDROW=@PAGEINDEX*@PAGESIZE
23     SELECT @SQL='WITH #TEMP '+
24     'AS (SELECT *,ROW_NUMBER() OVER(ORDER BY '+@COLUMN+' '+@TYPE+') AS ZID FROM '+@TABLENAME+')'+
25     'SELECT * FROM #TEMP WHERE ZID BETWEEN '+CONVERT(NVARCHAR,@BEGINROW)+' AND '+CONVERT(NVARCHAR,@ENDROW)+''
26     EXEC(@SQL)
27 --    PRINT @SQL
28 
29     SET @SQL='WITH #TEMP '+
30     'AS (SELECT * FROM '+@TABLENAME+')
31     SELECT @ROWCOUNT=COUNT(*) FROM #TEMP'
32     EXECUTE SP_EXECUTESQL @SQL,N'@ROWCOUNT INT OUTPUT',@ROWCOUNT OUTPUT
33 END

 

posted on 2013-01-25 11:02  一过  阅读(279)  评论(0编辑  收藏  举报