【PostgreSQL】配列をループさせる

2020年10月21日

スポンサーリンク

説明

配列をループさせる簡単な実行例があまりないと感じ、サンプル関数を用意しました。

pgAdminのクエリツールからすぐに実行できるようにしましたので、

実行し結果を確かめてみて下さい。

 

コード

※このコードをコピー後、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();

以上、配列をループさせるサンプルでした。

 

構文まとめを書いています。ぜひ一度見てみて下さい。

基本構文一覧・まとめ