MS SQL 2005 最簡單最通用的分頁儲存過程

2021-06-05 02:26:30 字數 1358 閱讀 2127

主要使用mssql的新函式row_number實現,我是配合ext.net使用的,記錄下來,以備後用,如有不對,觀迎指正。僅僅是實現了分頁,效率沒有考慮,我也是一mssql新手,所有**就是google組成的。獲取count要select一次,獲取記錄集又select一次,實在不是個好辦法,但我一直沒找到解決方法,有知道的指導一下啊。

引數說明:

sql: 傳進來的select語句,你可以任意構造,只要不反黨就能用。

size: 一頁的大小

start: 當前頁的開始記錄,我用的是ext.net,它直接給我的就是這引數,沒有給pageindex,就不用去算了。

count: 輸出引數,記錄總數,這個是分頁必須的吧,不然前台怎麼知道要分多少頁呢。

alter procedure [dbo].[selectpage] 

@sql nvarchar(2048),

@size int,

@start int,

@count int output

asbegin

declare @strpagea nvarchar(512);

declare @strpageb nvarchar(512);

declare @str nvarchar(3072);

set @strpagea = 'select * from (select *,row_number() over (order by id) as rowno from ( ';

set @strpageb = ') as t1) as t2 where rowno between ';

set @count = 0;

--獲取記錄總數--

set @str = 'select @count=count(*) from ( ' + @sql + ') as tt';

exec sp_executesql @str, n'@count as int output', @count output;

--print @str;

--分頁--

if @start=0

set @str = 'select top '+str(@size) + ' * from (select *,row_number() over (order by id) as rowno from ( ' + @sql + ' ) as t1 ) as t2';

else

set @str = @strpagea + @sql + @strpageb + str(@start+1) + ' and ' + str(@start+@size);

exec( @str );

--print @str;

end

MSsql2005如何啟用xp cmdshell

預設情況下,sql server2005安裝完後,xp cmdshell是禁用的 可能是安全考慮 如果要使用它,可按以下步驟 允許配置高階選項 exec sp configure show advanced options 1 go 重新配置 reconfigure go 啟用xp cmdshell...

MS SQL 2005 儲存過程簡介

儲存過程介紹 1,儲存過程,是在資料庫伺服器端執行的一組 transact sql 語句的集合,經編譯後存放在資料庫伺服器中。2,儲存過程作為乙個單元進行處理並由乙個名稱來標識。它能夠向使用者返回資料 向資料庫表中寫入和修改資料,還可以執行系統函式和管理操作。在程式設計過程中只需要給出儲存過程的名稱...

thinkphp連線mssql2005配置

這裡的54表示的是php5.4,如果你的是5.3版,就改成53,如果你的php版本是執行緒安全的,那麼你的php安裝目錄下應該有乙個php5ts.dll,與這裡的兩行語句對應,如果是php5nts.dll,那麼上面的語句應該是 php pdo sqlsrv extension php pdo sql...