sqlserver 2000 高效分頁儲存過程

2021-08-30 19:15:10 字數 2791 閱讀 2487

alter

procedure

pages

@tablenames

varchar

(200

),     

--表名,可以是多個表,但不能用別名

@primarykey

varchar

(100

),     

--主鍵,可以為空,但@order為空時該值不能為空

@fields

varchar

(800

),         

--要取出的字段,可以是多個表的字段,可以為空,為空表示select *

@pagesize

int,             

--每頁記錄數

@currentpage

int,         

--當前頁,0表示第1頁

@filter

varchar

(200) =

'',     

--條件,可以為空,不用填 where

@order

varchar

(200) =

'',    

--排序,可以為空,為空缺省按主鍵公升序排列,不用填 order by

@resultcount

varchar(24

)asbegin

declare

@toprow

varchar(12

)declare

@temppagesize

varchar(12

)if(len

(@order

)>0)

begin

set@order='

order by '+

@order

endelse

begin

set@order=''

endif

(len

(@filter

)<1)

begin

set@filter='

1=1'

endif

(@currentpage-1

<=0)

set@currentpage=0

if(len(

rtrim

(ltrim

(@resultcount

)))>0)

set@resultcount='

set rowcount '+

ltrim

(rtrim

(@resultcount

))set

@toprow

=rtrim

(ltrim

(str

(@pagesize*(

@currentpage-1

))))

set@temppagesize

=rtrim

(ltrim

(str

(@pagesize

)))exec('

declare @temptable table(rownum int identity(1,1),gid varchar(36))'+

'declare @datatable table(gid varchar(36))'+

'declare @date datetime'+

'set @date=getdate()'+

'set nocount on '+

''+@resultcount+'

insert into @temptable(gid) select '+

@primarykey+'

from '+

@tablenames+'

where  '+

@filter

+@order+'

set rowcount '+

@temppagesize+'

insert into @datatable(gid) select  gid from @temptable where rownum>'+

@toprow+'

select '+

@fields+'

from '+

@tablenames+'

where '+

@filter+'

and '+

@primarykey+'

in (select  gid from @datatable)'+

@order+'

set rowcount 0'+

'print(datediff(ms,@date,getdate()))')

--declare @datatable table(gid varchar(12))'+'

---insert into @datatable(gid) select  gid from @temptable where rownum>'+@toprow+'

--set rowcount '+@temppagesize+'

--+'set rowcount 0'

--print('insert into @temptable(gid) select '+@primarykey+' from '+@tablenames+' where  '+@filter+@order)

---print('select '+@fields+' from '+@tablenames+' where '+@filter+' and '+@primarykey+' in(select gid from @datatable) '+@order) 

endgo

sqlserver 2000 高效分頁儲存過程

alter procedure pages tablenames varchar 200 表名,可以是多個表,但不能用別名 primarykey varchar 100 主鍵,可以為空,但 order為空時該值不能為空 fields varchar 800 要取出的字段,可以是多個表的字段,可以為空...

SQLSERVER2000技術規格

sqlserver2000技術規格 系統技術規格 每個伺服器最多可以允許16個sqlserver例項 每個例項可擁有 2147483467 個鎖 資料庫技術規格 sqlserver的資料庫大小1048516tb 每個資料庫可擁有的檔案組數32767 每個資料庫可擁有的檔案組數256 檔案大小 資料檔...

SQLSERVER2000啟動失敗

服務管理器中啟動sqlserver服務 彈出視窗的錯誤資訊是 本地計算機上的mssqlserver服務啟動後又停止了。一些服務自動停止,如果它們沒有什麼可做的,例如 效能日誌和警報 服務 1 解決方法 調整系統時間到你上一次能夠正常啟動的時間,啟動sqlserver服務,成功後,然後再把時間調回來。...