【PostgreSQL】配列をループさせる
説明
配列をループさせる簡単な実行例があまりないと感じ、サンプル関数を用意しました。
pgAdminのクエリツールからすぐに実行できるようにしましたので、実行し結果を確かめてみて下さい。
コード
CREATE OR REPLACE FUNCTION testfnc()
RETURNS boolean
LANGUAGE 'plpgsql' COST 100 VOLATILE AS $BODY$
declare
loopcount integer;
arr character varying[];
begin
--arrは配列
arr = array['A','B','C','D'];
--配列の中身をループで表示する
for loopcount in 1..array_length(arr,1) loop
raise info '%' , arr[loopcount];
end loop;
return true;
end;
$BODY$;
ALTER FUNCTION testfnc() OWNER TO postgres;
--関数を実行する文↓
select * from testfnc();
実行結果について
実行した場合、「true」が返ってくるだけだと思いますが、「メッセージ」タブを表示すると配列の中身が表示されていると思います。
あとは適宜、中身を変えて実行してみて下さい。
【補足】For文について
For文の構文は次のように書きます。
--For文の構文
FOR 変数名 IN 初期値..終了値 LOOP
処理
END LOOP;
配列の要素数はarray_length()で取得できます。
2つ目の引数は配列の次元です。1次元の配列なら1を指定します。
--配列の要素数を取得する
array_length( 配列 , 配列の次元 )
これらを使ってサンプル関数では次のようにしています。
--ループ用の変数を「loopcount」とし、1から配列の要素数分ループさせる
for loopcount in 1..array_length(arr,1) loop
--raise infoで変数の中身を表示する
raise info '%' , arr[loopcount];
end loop;
数値型の配列バージョン
需要があるかわかりませんが文字型ではなく、数値型の配列も用意してみました。
CREATE OR REPLACE FUNCTION testfnc()
RETURNS boolean
LANGUAGE 'plpgsql' COST 100 VOLATILE AS $BODY$
declare
loopcount integer;
arr integer[];
begin
--arrは配列
arr = array[1,10,100,1000];
--配列の中身をループで表示する
for loopcount in 1..array_length(arr,1) loop
raise info '%' , arr[loopcount];
end loop;
return true;
end;
$BODY$;
ALTER FUNCTION testfnc() OWNER TO postgres;
--関数を実行する
select * from testfnc();
--関数を実行する
select * from testfnc();
以上、配列をループさせるサンプルでした。
関連記事(配列)