有自動增長id的任意表分頁查詢

2022-02-21 14:51:17 字數 1442 閱讀 1749

alter procedure proc_page

@table varchar(50), --表名

@pkey varchar(50), --主鍵

@condition varchar(500), --查詢條件

@pagenumber int, --開始頁數

@pagesize int, --每頁大小

@countpage int output --總頁數輸出

asif len(ltrim(rtrim(@condition)))=0 set @condition='1=1' --如果未輸入條件預設沒有條件

declare @sql nvarchar(4000)

declare @counts int,@c int --總行數,@c sql語句中的變數輸出

set @sql=n'select @c=count('+@pkey+') from '+@table+' where '+@condition

exec sp_executesql @sql,n'@c int output',@c output

set @counts=@c

set @countpage=ceiling(@counts*1.0/@pagesize)

if @pagenumber>@countpage set @pagenumber=@countpage --如果請求頁大於最大頁數,請求也是最大頁

if @pagenumber<=0 set @pagenumber=1 --請求也小於1,請求是1

if @pagenumber>1

begin

set @sql=n'select top '+cast(@pagesize as varchar(10))+' * from '+@table+' '+

'where id> (select max(id) from '+

'(select top '+cast(@pagenumber*@pagesize-@pagesize as varchar(10))+' id from '+@table+' order by '+@pkey+') as a) '+

'order by '+@pkey

end else

begin

set @sql=n'select top '+cast(@pagesize as varchar(10))+' * from '+@table+' order by '+@pkey

endexec (@sql)

go--測試

--declare @out int

--exec proc_page @table='test',@pkey='id',@condition='',@pagenumber=4,@pagesize=2,@countpage=@out output

--select @out

不用row_number實現

id的自動增長

自動生成id 配置xml時a generator 常用四個 native identiy sequence uuid 其中uuid 的返回值為 string 型別配置 annotation時a 自定義id b auto c identity d sequence e table 在 id前加上 ge...

MySQL中自動增長列ID的使用

mysql中自動增長列id的使用 mysql 中可以通過auto increment 屬性為新的行產生唯一的標識,如 create table animals id int not null auto increment,name varchar 10 insert into animals nam...

資料庫的自動增長的主鍵查詢

預約表和預約詳情表是兩種關聯表,預約表的主鍵id是預約詳情表的外來鍵,當新增預約表的時候,我們會有好幾條預約詳情表的資料需要新增,這個時候我們需要獲取預約表的主鍵id,但是我們的預約表中的主鍵id是自增長的,在插入預約表的時候我們並不能獲取插入資料的主鍵。當我們想實現在插入預約表的時候,將預約詳情表...