Sqlserver,MySql 通用分頁儲存過程

2021-07-07 11:04:31 字數 2504 閱讀 1034

create proc [dbo].[procpage]

@tablename varchar(20),--表名

@showfield varchar(100),--要顯示的列名

@wheretext varchar(500),--where條件(只需要寫where後面的語句)

@ordertext varchar(500),--排序條件(只需要寫order by後面的語句)

@pagesize int,--每一頁顯示的記錄數

@pageindex int,--當前頁

@datacount int output--總記錄數

asif(len(@wheretext)>0)

set @wheretext = ' where '+@wheretext

if(len(@ordertext)>0)

set @ordertext = ' order by '+@ordertext

declare @sql nvarchar(4000)

set @sql =

'select * from

(select row_number() over(order by tempcoulmn) num,* from

( select top '+convert(nvarchar(10),@pageindex*@pagesize)+' '+@showfield+',tempcoulmn=0 from '+@tablename+@wheretext+@ordertext+'

)p1)p2 where num>'+convert(nvarchar(10),(@pageindex-1)*@pagesize)

--執行字串的sql命令

exec(@sql)

--獲取總記錄數

set @sql = 'select @datacount=count(*) from '+@tablename+@wheretext

exec sp_executesql @sql,n'@datacount int output',@datacount output

create procedure procpage(

in tablename varchar(20),#表名

in showfield varchar(100),#要顯示的列名

in wheretext varchar(500),#where條件(只需要寫where後面的語句)

in ordertext varchar(500),#排序條件(只需要寫order by後面的語句)

in pagesize int,#每一頁顯示的記錄數

in pageindex int,#當前頁

out datacount int#總記錄數

)begin

if (pagesize<1)then

set pagesize=20;

end if;

if (pageindex < 1)then

set pageindex = 1;

end if;

if(length(wheretext)>0)then

set wheretext=concat(' where 1=1 ',wheretext);

end if;

if(length(ordertext)>0)then

set ordertext = concat(' order by ',ordertext);

end if;

set @strsql = concat('select ',showfield,' from ',tablename,' ',wheretext,' ',ordertext,' limit ',pageindex*pagesize-pagesize,',',pagesize);

prepare stmtsql from @strsql;

execute stmtsql;

deallocate prepare stmtsql;

set @strsqlcount=concat('select count(1) as count into @datacount from ',tablename,'',wheretext);

prepare stmtsqlcount from @strsqlcount;

execute stmtsqlcount;

deallocate prepare stmtsqlcount;

set datacount=@datacount;

end;

delimiter $

create procedure test()

begin

declare i int;

set i=1;

while i<30 do

select i;

set i=i+1;

end while ;

end $

call test() $

SQLServer MySql資料型別對照表

型別 sqlserver mysql 數值範圍 描述數值範圍 描述char 0 8000個字元 定長字串 0 255個字元 定長字串 nchar 0 4,000個字元 定長unicode字串 varchar 0 8000個字元 變長字串 0 255個字元 變長字串 nvarchar 0 4,000個...

高通 低通濾波

一 關於影象高頻和低頻 1.1 對影象高頻訊號和低頻訊號的理解 影象中的低頻訊號和高頻訊號也叫做低頻分量和高頻分量。簡單一點說,影象中的高頻分量,指的是影象強度 亮度 灰度 變化劇烈的地方,也就是 我們常說的邊緣 輪廓 影象中的低頻分量,指的是影象強度 亮度 灰度 變換平緩的地方,也就是大片色塊的地...

Android Notification通知的運用

package gongzibai.co.cc public class ea2activity extends activity else if status arg2 equals 離開 else if status arg2 equals 回家 override public void onn...