|
/* ·ÖÒ³´æ´¢¹ý³Ì */ CREATE PROCEDURE sp_paging
@pagesize int --ÿҳÏÔʾÌõÊý
, @pageindex int --µ±Ç°Ò³
, @tables varchar(3000) --ÏÔʾµÄ±í
, @fields varchar(5000) --ÏÔʾ×Ö¶Î
, @orderfield varchar(100) --ÅÅÐò×Ö¶Î
, @pkfield varchar(100) --Ö÷¼ü×Ö¶Î
, @strwhere varchar(500) --²éѯÌõ¼þ
, @strgroup varchar(500)='' --group by»ã×ÜÌõ¼þ
AS
/* set @pagesize=15 set @pageindex=2 set @tables='yp_supplyer where 1=1' set @fields='*' set @orderfield='supplyer_code' set @pkfield='supplyer_code' set @strwhere='py_code like ''%''' */
declare @strsql varchar(5000) declare @strend varchar(2000) declare @strorder varchar(100) declare @strcount varchar(1000)
--È¡¼Ç¼ÌõÊý
declare @str varchar(300) if charIndex('where',@tables)>0 begin if len(ltrim(@strwhere))>0 set @str=' and '+@strwhere else set @str='' end else begin if len(ltrim(@strwhere))>0 set @str=' where '+@strwhere else set @str='' end
set @strcount='(select count(1) from (select 1 val from '+@tables+@str+@strgroup+' ) tab_sel) row_count,'
--ÉèÖÃÊÇ·ñÅÅÐò
if len(ltrim(@orderfield))>0 set @strorder=' order by '+@orderfield else set @strorder=''
--ÉèÖòéѯÌõ¼þ
if len(ltrim(@strwhere))>0 set @strwhere=@strwhere+' and '
--ÉèÖÃgroup by
if len(ltrim(@strgroup))=0 or charIndex('group by',@strgroup)>0 set @strgroup=' '+@strgroup else set @strgroup=' group by '+@strgroup
set @strend=@strwhere+@pkfield+' not in ( select top '+convert(varchar(10),(@pageindex-1)*@pagesize)+' '+@pkfield+' from '+@tables+@str+@strgroup+@strorder+')'
if charIndex('where',@tables)>0 set @strend=' and '+@strend else set @strend=' where '+@strend --distinct
set @strsql='select top '+convert(varchar(4),@pagesize)+' '+@strcount+@fields+' from '+@tables+@strend+@strgroup+@strorder exec(@strsql) print @strsql GO
|