加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

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

发布时间:2020-12-12 14:58:58 所属栏目:MsSql教程 来源:网络整理
导读:? 在MS SQLServer中使用我们可以实现动态SQL的执行,方法如下: ? 假如我定义了一个@strsql的字符变量,其中存放'select * from jobs'这样一个字符串,我们可以通过 exec (@strsql)来执行 ? declare @strsql varchar(200) set @strsql='select * from jobs' exec
? 在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字符串就可以执行

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读