この目的のための特別な関数があります - array_fill:
postgres=# select array_fill(0, ARRAY[10]);
array_fill
-----------------------
{0,0,0,0,0,0,0,0,0,0}
(1行)
postgres=# select array_fill('Hello'::text, ARRAY[10]);
array_fill
-------------------------------------------------- -------------
{こんにちは、こんにちは、こんにちは、こんにちは、こんにちは、こんにちは、こんにちは、こんにちは、こんにちは、こんにちは}
(1行)
postgres=# select array_fill(0, ARRAY[3,3]);
array_fill
---------------------------
{{0,0,0},{0,0,0},{0,0,0}}
(1行)
PL/pgSQL の場合 (ただし、大きな配列 (100 項目以上) の場合は大幅に遅くなります):
やる $$
宣言する
結果 int[] = '{}';
始める
FOR i IN 1..10
ループ
結果 := 結果 || 0;
エンドループ;
RAISE NOTICE '%'、結果。
終わり;
$$;