配列の引数を渡す方法 †前回の記事「複数の引数を渡す方法」では、ファンクションに2つの引数を渡す方法を学びました。 お約束 †当サイトに記載されている会社名、製品名などは一般に各社または団体の商標または登録商標です。 SQLで配列の記述方法 †以下のようにSQLで配列を記述することができます。 sakuradb=> SELECT * FROM unnest(ARRAY[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]); unnest -------- 1 2 3 4 5 6 7 8 9 10 (10 rows) ※unnest配列関数は、配列を行集合に展開します。 配列の引数を渡すサンプル †PL/pgSQLで配列の引数を渡すサンプルコードを記します。 -- aryarg.sql CREATE OR REPLACE FUNCTION aryarg(num int[]) RETURNS int AS $$ DECLARE n int; t int := 0; BEGIN FOREACH n IN ARRAY num LOOP t := t + n; END LOOP; RETURN t; END $$ LANGUAGE plpgsql ; 上記のファンクションは、intの配列を渡し、足し算を行いクエリー結果として合計値を返却します。 ファンクションの登録および実行 †aryarg.sqlを登録し実行します。 sakura@cygwin ~$ psql -U sakura -h localhost -f aryarg.sql sakuradb Password for user sakura: CREATE FUNCTION sakura@cygwin ~$ psql -U sakura -h localhost sakuradb Password for user sakura: psql (9.6.0, server 9.2.17) Type "help" for help. sakuradb=> select aryarg(ARRAY[1,2,3,4,5,6,7,8,9,10]) as sum; sum ----- 55 (1 row) 1から10までの合計値が返却されます。 ファンクションの削除 †psqlフロントエンドから直接DROPしてみます。 sakuradb=> DROP FUNCTION aryarg(num int[]); DROP FUNCTION sakuradb=> まとめ †
|