微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在MS SQLServer中使用存储过程实现通用分页

 
在MS sqlServer中使用我们可以实现动态sql的执行,方法如下:
 
假如我定义了一个@strsql的字符变量,其中存放'select * from jobs'这样一个字符串,我们可以通过 exec (@strsql)来执行
 
declare @strsql varchar(200)
set @strsql='select * from jobs'
exec (@strsql)
go
 
运用这个原理我们可以写一个MS sqlServer通用存储过程实现分页,代码如下:
create proc pageutil
@tblname varchar(100),--表名
@pkname  varchar(100),--主键名称
@pgsize  int,--每页数据大小
@pg   int--当前页码
as
declare @toid int,
@strsql varchar(200)
set @toid=(@pg-1)*@pgsize
set @strsql='select top '+cast( @pgsize as varchar(10)) +' * from
'+@tblname+' where '+@pkname+' not in(
select top '+cast(@toid as varchar(10))+'
'+@pkname+' from '+@tblname+' order by '+@pkname+' ) order by '+@pkname
exec (@strsql)
使用时只需要传入表名,主键名,页大小,页码(从1开始)例如:
exec pageutil 'jobs','job_id',3,4
 
其实运用动态sql我们还可以做通用查询等等,无论你在存储过程中传入什么信息,我们只要能拼成一个sql字符串就可以执行

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐