pá 8. 4. 2022 v 19:56 odesílatel Adrian Klaver <adrian.kla...@aklaver.com> napsal:
> Postgres 14.2 > > In commenting on a SO question I came across the below. > > Given: > > CREATE OR REPLACE FUNCTION public.for_loop_test() > RETURNS void > LANGUAGE plpgsql > AS $function$ > BEGIN > FOR i IN 1..10 LOOP > RAISE NOTICE '%', i; > END LOOP; > END; > > $function$ > ; > > select for_loop_test(); > NOTICE: 1 > NOTICE: 2 > NOTICE: 3 > NOTICE: 4 > NOTICE: 5 > NOTICE: 6 > NOTICE: 7 > NOTICE: 8 > NOTICE: 9 > NOTICE: 10 > > Then, note 1...10: > > CREATE OR REPLACE FUNCTION public.for_loop_test() > RETURNS void > LANGUAGE plpgsql > AS $function$ > BEGIN > FOR i IN 1...10 LOOP > RAISE NOTICE '%', i; > END LOOP; > END; > > $function$ > > select for_loop_test(); > for_loop_test > --------------- > > If you do: > > FOR i IN 1....10 LOOP > > or > > FOR i IN 1.10 LOOP > > You get: > > ERROR: syntax error at or near ".." > LINE 6: FOR i IN 1....10 LOOP > > ERROR: syntax error at or near "1.10" > LINE 6: FOR i IN 1.10 LOOP > > respectively. > > Why is the three period form allowed through and why does it produce no > result? > Maybe (2022-04-08 19:57:57) postgres=# select .10; ┌──────────┐ │ ?column? │ ╞══════════╡ │ 0.10 │ └──────────┘ (1 row) > > -- > Adrian Klaver > adrian.kla...@aklaver.com > > >