関数(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