Apologies, as usual I didn't read the docs carefully enough. On Tue, May 17, 2016 at 7:13 PM, Tom Lane <t...@sss.pgh.pa.us> wrote:
> Shay Rojansky <r...@roji.org> writes: > > A user of mine just raised a strange issue... While it is possible to > use a > > parameter in a LIMIT clause, PostgreSQL does not seem to allow using one > in > > a FETCH NEXT clause. In other words, while the following works: > > SELECT 1 LIMIT $1; > > The following generates a syntax error: > > SELECT 1 FETCH NEXT $1 ROWS ONLY; > > Since LIMIT and FETCH NEXT are supposed to be equivalent this behavior is > > odd. > > Per the SELECT reference page: > > SQL:2008 introduced a different syntax to achieve the same result, > which PostgreSQL also supports. It is: > > OFFSET start { ROW | ROWS } > FETCH { FIRST | NEXT } [ count ] { ROW | ROWS } ONLY > > In this syntax, to write anything except a simple integer constant for > start or count, you must write parentheses around it. > > The comments about this in gram.y are informative: > > * Allowing full expressions without parentheses causes various parsing > * problems with the trailing ROW/ROWS key words. SQL only calls for > * constants, so we allow the rest only with parentheses. If omitted, > * default to 1. > > regards, tom lane >