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是自增長的,在插入預約表的時候我們並不能獲取插入資料的主鍵。當我們想實現在插入預約表的時候,將預約詳情表...