mssql 通用儲存過程

2021-06-07 13:04:47 字數 1730 閱讀 2921

create proc commonpagination 

@columns varchar(500), --要顯示的列名,用逗號隔開 

@tablename varchar(100), --要查詢的表名 

@ordercolumnname varchar(100), --排序的列名 

@order varchar(50), --排序的方式,公升序為asc,降序為 desc 

@where varchar(100), --where 條件,如果不帶查詢條件,請用 1=1 

@pageindex int, --當前頁索引 

@pagesize int, --頁大小(每頁顯示的記錄條數) 

@pagecount

int output --總頁數,輸出引數 

as begin 

declare @sqlrecordcount nvarchar(1000) --得到總記錄條數的語句 

declare @sqlselect nvarchar(1000) --查詢語句 

set @sqlrecordcount=n'select @recordcount=count(*) from ' 

+@tablename + ' where '+ @where 

declare @recordcount int --儲存總記錄條數的變數 

exec sp_executesql @sqlrecordcount,n'@recordcount int output',@recordcount output 

--動態 sql 傳參 

if( @recordcount % @pagesize = 0) --如果總記錄條數可以被頁大小整除 

set @

pagecount

= @recordcount / @pagesize --總頁數就等於總記錄條數除以頁大小 

else --如果總記錄條數不能被頁大小整除 

set @

pagecount

= @recordcount / @pagesize + 1 --總頁數就等於總記錄條數除以頁大小加1 

set @sqlselect = 

n'select '+@columns+' from ( 

select row_number() over (order by ' 

+@ordercolumnname+' '+@order 

+') as tempid,* from ' 

+@tablename+' where '+ @where 

+') as temptablename where tempid between ' 

+str((@pageindex - 1)*@pagesize + 1 ) 

+' and '+str( @pageindex * @pagesize) 

exec (@sqlselect) --執行動態sql 

end 

go --以下是呼叫示例 

use pubs 

go declare @

pagecount

int 

exec commonpagination 

'job_id,job_desc','jobs','job_id', 

'asc','1=1',2,2,@

pagecount

output 

select '總頁數為:' + str(@

pagecount

)

MSSQL通用分頁儲存過程

分頁的儲存過程 create procedure getrecordfrompage tblname varchar 255 表名 fldname varchar 255 欄位名 pagesize int 10,頁尺寸 pageindex int 1,頁碼 iscount bit 0,返回記錄總數,...

MSSQL儲存過程

sqlserver 帶有返回值,儲存過程同時新增兩張表,並將第一張表的主鍵插入第二張表當中 2010 07 04 22 00 55 分類 sql 字型大小 訂閱 sql server 中,可以使用 scope identity identity ident current 來取得最後插入記錄的值值,...

通用儲存過程

alter proc dbo pagination pagesize int 10 每頁顯示的記錄數 pagecurrent int 1 當前要顯示的頁號 fdname varchar 100 主鍵名或者標識列名 selectstr varchar 2000 select子句,不包含select關鍵...