两款sql 分页存储过程代码
文章收藏了两款sql 分页存储过程代码,这二款存储过程是二款高效分页存储过程代码,如果你觉得自己写的语句不够,强的话,可以利用我们现成的高效分页存储过程实例代码。
文章收藏了两款sql 代码,这二款存储过程是二款高效分页存储过程代码,如果你觉得自己写的语句不够,强的话,可以利用我们现成的高效分页存储过程实例代码。
create 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
as
begin
declare @toprow varchar(12)
declare @temppagesize varchar(12)
if(len(@order)>0)
begin
set @order=' order by '+@order
end
else
begin
set @order=''
end
if (len(@filter) begin
set @filter=' 1=1'
end
if(@currentpage-1 set @currentpage=0
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(12))'+'
declare @datatable table(gid varchar(12))'+'
declare @timer datetime'+'
set @timer = getdate() '+'
set nocount on '+'
insert into @temptable(gid) select '+@primarykey+' from '+@tablenames+' where '+@filter+@order+'
insert into @datatable(gid) select top '+@temppagesize+'gid from @temptable where rownum>'+@toprow+'
set rowcount '+@temppagesize+'select '+@fields+' from '+@tablenames+' where '+@filter+' and '+@primarykey+' in (select gid from @datatable)'+@order+'
set rowcount 0'+'
print(datediff(millisecond, @timer, getdate()))')
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)
end
go
实例代码二
alter procedure [dbo].[common_procedure_selectwithpage]
@sql varchar(5000),
@currentpageno int,
@pagesize int,
@totalnum int output
as
set nocount on
declare @sqlcmd varchar(5000)
------------------------------------------ --查询数据
set @sqlcmd = 'select * from (' + @sql + ') a where rowindex between ' + convert(varchar,(@currentpageno-1) * @pagesize + 1) + ' and ' + convert(varchar,@currentpageno * @pagesize)
exec(@sqlcmd) print (@sqlcmd)
------------------------------------------ --求记录总数
if @totalnum = -1
begin
create table #temp1(num int)
insert into #temp1
exec('select count(*) from (' + @sql + ') a')
select @totalnum=(select * from #temp1)
drop table #temp1
end用法很简单,但必须在传入的sql中使用row_number() over(...) as rowindex :
declare @sql varchar(5000)
declare @currentpageno int
declare @pagesize int
declare @totalnum intset @currentpageno = 100
set @pagesize = 10
set @totalnum = -1
set @sql = ' select *, row_number() over (order by 排序字段) as rowindex from 表名 a with (nolock) 'exec [dbo].[common_procedure_selectwithpage] @sql,@currentpageno,@pagesize,@totalnum output
select @totalnum

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

熱門話題

HQL和SQL在Hibernate框架中進行比較:HQL(1.物件導向語法,2.資料庫無關的查詢,3.類型安全),而SQL直接操作資料庫(1.與資料庫無關的標準,2.可執行複雜查詢和資料操作)。

《OracleSQL中除法運算的用法》在OracleSQL中,除法運算是常見的數學運算之一。在資料查詢和處理過程中,除法運算可以幫助我們計算欄位之間的比例或得出特定數值的邏輯關係。本文將介紹OracleSQL中除法運算的用法,並提供具體的程式碼範例。一、OracleSQL中除法運算的兩種方式在OracleSQL中,除法運算可以用兩種不同的方式來進行

Oracle和DB2是兩個常用的關聯式資料庫管理系統,它們都有自己獨特的SQL語法和特性。本文將針對Oracle和DB2的SQL語法進行比較與區別,並提供具體的程式碼範例。資料庫連接在Oracle中,使用以下語句連接資料庫:CONNECTusername/password@database而在DB2中,連接資料庫的語句如下:CONNECTTOdataba

MyBatis動態SQL標籤解讀:Set標籤用法詳解MyBatis是一個優秀的持久層框架,它提供了豐富的動態SQL標籤,可以靈活地建構資料庫操作語句。其中,Set標籤是用來產生UPDATE語句中SET子句的標籤,在更新作業中非常常用。本文將詳細解讀MyBatis中Set標籤的用法,以及透過具體的程式碼範例來示範其功能。什麼是Set標籤Set標籤用於MyBati

本站3月7日訊息,華為資料儲存產品線總裁週躍峰博士日前出席MWC2024大會,專門展示了為溫資料(WarmData)和冷資料(ColdData)設計的新一代OceanStorArctic磁電儲存解決方案。華為資料儲存產品線總裁週躍峰發布系列創新解決方案圖來源:華為本站附上華為官方新聞稿內容如下:該方案的成本比磁帶低20%,功耗比硬碟低90%。根據國外科技媒體blocksandfiles報道,華為發言人也透露了關於該磁電儲存解決方案的資訊:華為的磁電磁碟(MED)是對磁性儲存媒體的重大創新。第一代ME

如果您需要遠端編程任何設備,這篇文章會為您帶來幫助。我們將分享編程任何設備的頂級GE通用遠端代碼。通用電氣的遙控器是什麼? GEUniversalRemote是一款遙控器,可用於控制多個設備,如智慧電視、LG、Vizio、索尼、藍光、DVD、DVR、Roku、AppleTV、串流媒體播放器等。 GEUniversal遙控器有各種型號,具有不同的功能和功能。 GEUniversalRemote最多可以控制四台設備。頂級通用遙控器代碼,可在任何裝置上編程GE遙控器配備一組代碼,使其能夠與不同設備配合。您可

解決方法:1、檢查登入使用者是否具有足夠的權限來存取或操作該資料庫,確保該使用者俱有正確的權限;2、檢查SQL Server服務的帳戶是否具有存取指定檔案或資料夾的權限,確保該帳戶具有足夠的權限來讀取和寫入該文件或資料夾;3、檢查指定的資料庫文件是否已被其他進程打開或鎖定,嘗試關閉或釋放該文件,並重新運行查詢;4、嘗試以管理員身份運行Management Studio等等。

身為一名程式設計師,對於能夠簡化程式設計體驗的工具,我感到非常興奮。借助人工智慧工具的幫助,我們可以產生演示程式碼,並根據需求進行必要的修改。在VisualStudioCode中新引入的Copilot工具讓我們能夠創建具有自然語言聊天互動的AI生成程式碼。透過解釋功能,我們可以更好地理解現有程式碼的含義。如何使用Copilot產生程式碼?要開始,我們首先需要取得最新的PowerPlatformTools擴充。要實現這一點,你需要進入擴充頁面,搜尋“PowerPlatformTool”,然後點擊Install按鈕
