FIRST and NEXT are synonyms as well as ROW and ROWS, i.e. you can use any of two variants.
integer_expression_2 presents a number of rows which have to be returned, whereas integer_expression_1 is a number of rows from the beginning of sorted result set, which need to be missed before return. If FETCH keyword is absent, all rows will be returned beginning from integer_expression_1 + 1.
With aid of these new features, paging procedure which has been considered above can be rewritten in a very simple manner:
CREATEPROC paging
@n int =2-- number of rows per page, 2 by default
, @p int =1-- number of page to return, first by default