CREATEPROCEDURE GET_MSGLIST @PageIndexint=1, @PageSizeint=20, @OrderFieldnvarchar(20), @IsDescint=0 AS DECLARE@sqlnvarchar(4000),@HighSideint,@LowSideint,@OrderMarknvarchar(5); BEGIN IF(@IsDesc=1) BEGIN SET@OrderMark='DESC'; END; ELSE BEGIN SET@OrderMark='ASC'; END; IF(@PageIndex=1) BEGIN SET@LowSide=1; SET@HighSide=@PageSize; END; ELSE BEGIN SET@LowSide=@PageIndex*@PageSize-@PageSize; SET@HighSide=@PageIndex*@PageSize; END; SET@sql='select c.* from (select top '+cast(@HighSideasnvarchar)+ ' ROW_NUMBER() OVER(ORDER BY '+@OrderField+''+@OrderMark+') AS RowID,ML.*,MT.[Name],MT.Description '+ 'FROM MsgList ML INNER JOIN MsgType MT ON ML.TID=MT.ID) c '+ 'WHERE RowID BETWEEN '+cast(@LowSideasnvarchar) +' AND '+cast(@HighSideasnvarchar); PRINT(@sql); EXEC(@sql); END