ROW_を使うNUMBER()の改ページ保存プロセス
1716 ワード
今日は新しいプロジェクトをする時は改ページを使います。以前やったプロジェクトの中から改ページの保存過程を見つけて、直接に表の名前を入れて改ページすることができます。ROW_を使いました。NUMBER()関数はMSSQL 2005以上に適用されますので、あらかじめメモしておきます。
以下は呼び出しの例です。ここでジョイン接続ができます。
-- =============================================
-- Author:
-- Create date: 2009-07-22 12:41
-- Description: , ROW_NUMBER()
-- =============================================
create PROCEDURE [dbo].[proc_ShowPage]
@tblName varchar(255), --
@strGetFields varchar(1000) = '*', -- , *
@strOrder varchar(255)='', -- ,
@strOrderType varchar(10)='ASC', -- , ASC
@PageSize int = 10, -- , 10
@PageIndex int = 1, -- , 1
@strWhere varchar(1500) = '' -- ( : where)
AS
declare @strSQL varchar(5000)
if @strWhere !=''
set @strWhere=' where '+@strWhere
set @strSQL=
'SELECT * FROM ('+
'SELECT ROW_NUMBER() OVER (ORDER BY '+@strOrder+' '+@strOrderType+') AS pos,'+@strGetFields+' '+
'FROM '+@tblName+' '+@strWhere+
') AS sp WHERE pos BETWEEN '+str((@PageIndex-1)*@PageSize+1)+' AND '+str(@PageIndex*@PageSize)
exec (@strSQL)
以下は呼び出しの例です。ここでジョイン接続ができます。
EXEC [proc_ShowPage]
@tblName = N'(project p inner join projectca ca on p.caid=ca.id)',
@strGetFields = N'p.title,ca.caname',
@strOrder = N'p.id',
@strOrderType = N'desc',
@PageSize = 12,
@PageIndex = 1,
@strWhere = N''