昨日まで書いたPL/v8PostGISラスタの件で、ピクセル範囲を0, 1, 2, 3, 4とインクリメントしながらSQLに入れて一回ずつpsqlで実行できないかな~と。記事では省略しましたが一応できたので、汎用的な形でメモしておきます。実行環境はWindows 7 64bit + PostgreSQL 9.5.0付属のpsql。

↓ 最も基本的な例。初め1回だけ変数nにゼロを入れます。次に「nをインクリメント」する文①と「nSQLに入れてクエリ」する文②を一まとめに繰り返せばOK。①→②としたのは結果の見やすさのためで、逆でも同じです。
-- 最初だけ実行
\set n 0

-- 以下、繰り返し
\set n :n + 1
select :n;
+----------+
| ?column? |
+----------+
|        1 |
+----------+
(1 row)

\set n :n + 1
select :n;
+----------+
| ?column? |
+----------+
|        2 |
+----------+
(1 row)

\set n :n + 1
select :n;
+----------+
| ?column? |
+----------+
|        3 |
+----------+
(1 row)

(...)


数値だけでなく、日付にも使えました。↓
-- 最初だけ実行
\set n 0

-- 以下繰り返し
\set n :n + 1
select cast('2016-2-' || :n as date);
+------------+
|    date    |
+------------+
| 2016-02-01 |
+------------+
(1 row)

\set n :n + 1
select cast('2016-2-' || :n as date);
+------------+
|    date    |
+------------+
| 2016-02-02 |
+------------+
(1 row)

\set n :n + 1
select cast('2016-2-' || :n as date);
+------------+
|    date    |
+------------+
| 2016-02-03 |
+------------+
(1 row)

(...)


↓ 時間間隔(interval型)にも使えました。日付だと、単なる数字のインクリメントでは駄目で月替わりを考える必要がありますが、intervalなら1日加算をずっと繰り返せば済みます。これはどこかで役に立つかも。
-- 最初だけ実行
\set n 0

-- 以下繰り返し
\set n :n + 1
select '2016-1-31' :: date + concat(:n, 'day') :: interval;
+---------------------+
|      ?column?       |
+---------------------+
| 2016-02-01 00:00:00 |
+---------------------+
(1 row)

\set n :n + 1
select '2016-1-31' :: date + concat(:n, 'day') :: interval;
+---------------------+
|      ?column?       |
+---------------------+
| 2016-02-02 00:00:00 |
+---------------------+
(1 row)

\set n :n + 1
select '2016-1-31' :: date + concat(:n, 'day') :: interval;
+---------------------+
|      ?column?       |
+---------------------+
| 2016-02-03 00:00:00 |
+---------------------+
(1 row)

(...)


なおpsql\echoコマンドで変数(ここではn)を出力すると ↓ インクリメントされた数値でなく、+1がどんどん末尾に加わってました。今回調べてませんが変数の長さに制約があれば、そこまでかも。変数をSQLで文字列として出すとちゃんと加算後の数値になってるので、クエリ前に評価してるっぽいです。
\set n :n + 1
\set n :n + 1
\set n :n + 1
\set n :n + 1
\set n :n + 1
\set n :n + 1
\set n :n + 1

\echo :n
0+1+1+1+1+1+1+1+1+1+1

select '' || :n;
+----------+
| ?column? |
+----------+
| 10       |
+----------+
(1 row)