PL/pgSQL/配列の引数を渡す方法
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
]
開始行:
----
⌣''[[PL/pgSQL入門ページに戻る>PL/pgSQL入門]]''
----
* 配列の引数を渡す方法 [#zcd125f4]
前回の記事「[[複数の引数を渡す方法>PL/pgSQL/複数の引数を...
今回はファンクションに配列の引数を渡すサンプルを記します。
#contents
#htmlinsertpcsp(db-top.html,db-sp.html)
* お約束 [#p68aa961]
当サイトに記載されている会社名、製品名などは一般に各社ま...
当サイトの資料により直接的および間接的障害が生じても一切...
自己責任のもとで本資料をご利用ください。
* SQLで配列の記述方法 [#vd27873a]
以下のようにSQLで配列を記述することができます。~
sakuradb=> SELECT * FROM unnest(ARRAY[1, 2, 3, 4, 5, 6, ...
unnest
--------
1
2
3
4
5
6
7
8
9
10
(10 rows)
※unnest配列関数は、配列を行集合に展開します。
* 配列の引数を渡すサンプル [#f40136f6]
PL/pgSQLで配列の引数を渡すサンプルコードを記します。~
引数で渡したintの配列の値を足し算し結果をクエリーに表示し...
(sumでも同様のことができますが、PL/pgSQL入門という事でご...
#ref(aryarg.sql)
-- 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の配列を渡し、足し算を行いクエ...
* ファンクションの登録および実行 [#gd900684]
&ref(aryarg.sql);を登録し実行します。~
ユーザ名、ホスト、データベース名は皆さんの環境にあった値...
sakura@cygwin ~$ psql -U sakura -h localhost -f aryarg.s...
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
-----
55
(1 row)
1から10までの合計値が返却されます。~
尚、本サンプルに記述されているFOREACHに関しては、別途記事...
* ファンクションの削除 [#fd9c3ce0]
psqlフロントエンドから直接DROPしてみます。
sakuradb=> DROP FUNCTION aryarg(num int[]);
DROP FUNCTION
sakuradb=>
* まとめ [#p375b926]
+ ARRAY[foo,bar,hoge]のようにすれば、配列を渡すことができ...
+ この記事では、intの配列int[]としましたが、text[]のよう...
----
⌣''[[PL/pgSQL入門ページに戻る>PL/pgSQL入門]]''
#htmlinsertpcsp(db-btm.html,db-sp.html)
終了行:
----
⌣''[[PL/pgSQL入門ページに戻る>PL/pgSQL入門]]''
----
* 配列の引数を渡す方法 [#zcd125f4]
前回の記事「[[複数の引数を渡す方法>PL/pgSQL/複数の引数を...
今回はファンクションに配列の引数を渡すサンプルを記します。
#contents
#htmlinsertpcsp(db-top.html,db-sp.html)
* お約束 [#p68aa961]
当サイトに記載されている会社名、製品名などは一般に各社ま...
当サイトの資料により直接的および間接的障害が生じても一切...
自己責任のもとで本資料をご利用ください。
* SQLで配列の記述方法 [#vd27873a]
以下のようにSQLで配列を記述することができます。~
sakuradb=> SELECT * FROM unnest(ARRAY[1, 2, 3, 4, 5, 6, ...
unnest
--------
1
2
3
4
5
6
7
8
9
10
(10 rows)
※unnest配列関数は、配列を行集合に展開します。
* 配列の引数を渡すサンプル [#f40136f6]
PL/pgSQLで配列の引数を渡すサンプルコードを記します。~
引数で渡したintの配列の値を足し算し結果をクエリーに表示し...
(sumでも同様のことができますが、PL/pgSQL入門という事でご...
#ref(aryarg.sql)
-- 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の配列を渡し、足し算を行いクエ...
* ファンクションの登録および実行 [#gd900684]
&ref(aryarg.sql);を登録し実行します。~
ユーザ名、ホスト、データベース名は皆さんの環境にあった値...
sakura@cygwin ~$ psql -U sakura -h localhost -f aryarg.s...
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
-----
55
(1 row)
1から10までの合計値が返却されます。~
尚、本サンプルに記述されているFOREACHに関しては、別途記事...
* ファンクションの削除 [#fd9c3ce0]
psqlフロントエンドから直接DROPしてみます。
sakuradb=> DROP FUNCTION aryarg(num int[]);
DROP FUNCTION
sakuradb=>
* まとめ [#p375b926]
+ ARRAY[foo,bar,hoge]のようにすれば、配列を渡すことができ...
+ この記事では、intの配列int[]としましたが、text[]のよう...
----
⌣''[[PL/pgSQL入門ページに戻る>PL/pgSQL入門]]''
#htmlinsertpcsp(db-btm.html,db-sp.html)
ページ名: