関数(FUNCTION)の作り方・書き方を解説する
ここでは関数(FUNCTION)を作る場合の書き方について、解説します。
ざっくりと各ブロックはこんな感じになります。(黄色のところを書くイメージ)
①~⑤の個所について説明していきます。
※ここで紹介している以外の書き方もありますが、一つの書き方として紹介します。
CREATE OR REPLACE FUNCTION 関数の名前(引数1 , 引数2 , 引数3 , ・・・) … ①
RETURNS 戻り値の型 AS … ②
$BODY$
declare
引数を宣言する部分 … ③
BEGIN
処理を書く部分 … ④
END;
$BODY$
LANGUAGE plpgsql VOLATILE
COST 100;
【①の箇所】関数の名前
①の黄色の箇所は関数名と引数の型を記述するところです。
CREATE OR REPLACE FUNCTION 関数の名前(引数1 , 引数2 , 引数3 , ・・・)
例:
CREATE OR REPLACE FUNCTION testfnc( character varying , numeric , numeric)
【②の箇所】戻り値
RETURNS 戻り値の型 AS … ②
例:
RETURNS character varying AS … 文字型で返す
RETURNS integer AS … 数値型で返す
【③の箇所】引数
引数は複数あった場合、「, 」(カンマ)でつなげて書きます。
CREATE OR REPLACE FUNCTION test_fnc(引数1 , 引数2 , 引数3)
例:
CREATE OR REPLACE FUNCTION test_fnc(character varying) … 引数1つ
CREATE OR REPLACE FUNCTION test_fnc(numeric , character varying) … 引数2つ
CREATE OR REPLACE FUNCTION test_fnc(character varying , numeric , integer) … 引数3つ
BEGINの前に引数を格納する変数名を書きます。
水色の「alias for $XX」でXX番目の引数かを書きます。
CREATE OR REPLACE FUNCTION 関数の名前(引数1 , 引数2 , 引数3 , ・・・)
・・・
declare
hensuu1 alias for $1; … 引数1の値はこの変数に代入される … ③
hensuu2 alias for $2; … 引数2の値はこの変数名に入される
hensuu3 alias for $3; … 引数3の値はこの変数名に入される
BEGIN
・・・
【④の箇所】処理
④処理部分は目的に合わせた処理を記述しますが、最後は「return」で返り値を指定して下さい。
BEGIN
処理を書く部分
return 返り値;
END;
例:
BEGIN
(中略)
return 0;
END;
関数のテンプレート
上で紹介はしたものの、1から関数を書くのは手間です。
そのためコピー&貼り付けである程度済む、「関数テンプレート」を用意したので使ってみて下さい。
https://postgresweb.com/template-create-function