Re: Parameters don't work in FETCH NEXT clause?

Поиск
Список
Период
Сортировка
От Tom Lane
Тема Re: Parameters don't work in FETCH NEXT clause?
Дата
Msg-id 1281.1463501589@sss.pgh.pa.us
обсуждение исходный текст
Ответ на Parameters don't work in FETCH NEXT clause?  (Shay Rojansky <roji@roji.org>)
Ответы Re: Parameters don't work in FETCH NEXT clause?  (Shay Rojansky <roji@roji.org>)
Список pgsql-hackers
Shay Rojansky <roji@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
aroundit.
 

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.
SQLonly calls for* constants, so we allow the rest only with parentheses.  If omitted,* default to 1.
 
        regards, tom lane



В списке pgsql-hackers по дате отправления:

Предыдущее
От: "David E. Wheeler"
Дата:
Сообщение: Re: Does Type Have = Operator?
Следующее
От: Shay Rojansky
Дата:
Сообщение: Re: Parameters don't work in FETCH NEXT clause?