【PostgreSQL】関数の作り方・書き方

スポンサーリンク

説明

ここでは関数(FUNCTION)を作る場合の書き方について、紹介します。

ざっくりと各ブロックはこんな感じになります。(黄色のところを書くイメージ)

①~⑤の個所について説明していきます。

※ここで紹介している以外の書き方もありますが、一つの書き方として紹介します。

CREATE OR REPLACE FUNCTION 関数の名前(引数1 , 引数2 , 引数3 , ・・・)   …   ①
RETURNS 戻り値の型 AS      …   ②
$BODY$
declare

           引数を宣言する部分   …   ③

BEGIN

           処理を書く部分         …   ④

END;
$BODY$
LANGUAGE plpgsql VOLATILE
COST 100;
ALTER FUNCTION 関数の名前( 引数1 , 引数2 , 引数3 , ・・・)   …   ⑤
OWNER TO postgres;

 

①、⑤ 関数の名前

①と⑤の黄色の箇所は関数名と引数の型を記述するところです。

『関数の名前(引数1 , 引数2 , 引数3 , ・・・)』は同じものが入ります。

CREATE OR REPLACE FUNCTION 関数の名前(引数1 , 引数2 , 引数3 , ・・・) … ①

(省略)

ALTER FUNCTION 関数の名前( 引数1 , 引数2 , 引数3 , ・・・)                       … ⑤
OWNER TO postgres;

 

例:

CREATE OR REPLACE FUNCTION testfnc( character varying , numeric , numeric)

(省略)

ALTER FUNCTION testfnc( character varying , numeric , numeric)
OWNER TO postgres;

 

② 戻り値

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;

 

具体的な関数例

関数例を紹介します。

文字列をバイト数で計算する

数値であるかのチェック(IsNumeric)

配列の要素数を取得する