存储过程——数据的分页

这个存储过程用来数据的分页,里面构造的一个函数实现这个功能;

if  object_id('fenye','p') is not null  

 /*判断是否存在fenye这个存储过程*/   

 drop  proc fenye GO CREATE PROCEDURE [dbo].[fenye] @currentpage  int=1, 

/*记录当前的页数,初始值为1*/

@count  int=10,     

  /*每一个页面所显示的数据量*/

@tablename varchar(20), 

/*所查询的表的名字*/

 @colunm  varchar(20)   

  /*表中查询的字段*/

 AS declare   @sql  nvarchar(1000) 

  /*定义查询字段变量*/

set  @sql=N'select  top '+ cast(@count as nvarchar(3))

 /*将字符串变量转换成字符型*/

 SET  @sql=@sql+N'  *  from '+@tablename+' where '+@colunm+' not in (' set  @sql=@sql+N' select top '+cast(((@currentpage-1)*@count) as  nvarchar(3)) set  @sql=@sql+@colunm+N' from '+@tablename+')' SELECT @sql  

 /*显示出插叙语句*/

 exec  (@sql) Go

exec fenye 1,3,'dbo.Article_Comment','ArticleID' 

 /*执行查询*/

GO

/*这里面是构造查询所有数据记录的条数的函数*/

DECLARE  @TEMP  NVARCHAR(500)  DECLARE  @TABLENAME  NVARCHAR(50) DECLARE  @COUNT  INT SET  @TABLENAME=N'dbo.Article_Comment' SET  @TEMP=N' SELECT  @A=COUNT(*) FROM '+@TABLENAME EXEC  SP_EXECUTESQL @TEMP ,N'@A INT OUTPUT',@COUNT OUTPUT

/*调用的是系统中的一个函数 SP_EXECUTESQL(执行的SQL语句,输出变量的函数类型,输出变量的函数)*/

SELECT @COUNT

你可能感兴趣的:(存储过程)