mysql subindex_mssql server sql分页存储过程
set quoted_identifier on
go
set ansi_nulls on
go
create proc execbypage
@sqlquery varchar(2000), --//輸入?yún)?shù):sql檢索語(yǔ)句或表名
@pagesize int, --//輸入?yún)?shù):每頁(yè)顯示記錄條數(shù)
@pageindex int --//輸入?yún)?shù):當(dāng)前頁(yè)碼
as
set nocount on
set ansi_warnings off
declare @tmptablename varchar(50)
set @tmptablename = '##tb1516_' + replace(cast(newid() as varchar(40)),'-','') --//生成隨機(jī)臨時(shí)表名稱
declare @subindex int
set @subindex = charindex('from',@sqlquery)
if (@subindex > 0)
begin --//帶from的標(biāo)準(zhǔn)檢索語(yǔ)句
declare @sqlquery1 varchar(2000)
declare @sqlquery2 varchar(2000)
set @sqlquery1 = substring(@sqlquery,1,@subindex - 1)
set @sqlquery2 = substring(@sqlquery,@subindex,len(@sqlquery))
set @sqlquery = @sqlquery1 + ',identity(numeric,1,1) as id1516 into ' + @tmptablename + ' ' + @sqlquery2
end
else --//不帶from的表名
begin
set @sqlquery = 'select *,identity(numeric,1,1) as id1516 into ' + @tmptablename + ' from' + @sqlquery
end
exec(@sqlquery) --//建立并初始化臨時(shí)表數(shù)據(jù)
declare @indexstart varchar(20),@indexend varchar(20)
set @indexstart = cast((@pageindex-1)*@pagesize+1 as varchar(20)) --//數(shù)據(jù)起始行id
set @indexend = cast(@pageindex * @pagesize as varchar(20)) --//數(shù)據(jù)結(jié)束行id
exec('select * from ' + @tmptablename + ' where id1516 between ' + @indexstart + ' and ' + @indexend) --//檢索該頁(yè)數(shù)據(jù)
exec('select max(id1516) as recordcount from ' + @tmptablename) --//提取總條數(shù)
exec('drop table ' + @tmptablename) --//刪除臨時(shí)表
go
set quoted_identifier off
go
set ansi_nulls on
go
總結(jié)
以上是生活随笔為你收集整理的mysql subindex_mssql server sql分页存储过程的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: LeetCode 64. 最小路径和(D
- 下一篇: linux cmake编译源码,linu