PostgreSQLで自作の関数を定義する
PostgreSQLの関数は CREATE FUNCTION で定義する。
以下、例を示す。例2、例3については説明どおりに動くか自信はないが^^;
例1:加算
IMMUTABLE はデータベースに変更をしないことを示す。
RETURNS NULL ON NULL INPUT は引数にNULLがある場合NULLを返すことを示す。
CREATE FUNCTION add(integer, integer) RETURNS integer AS 'select $1 + $2;' LANGUAGE SQL IMMUTABLE RETURNS NULL ON NULL INPUT;
例2:指定された日付の月の日数を返す関数
double precision は倍精度浮動小数点。extract() の返り値がこの型なのでこの関数の返り値の型も double precision にしている。
処理の部分はBEGIN~END で処理を記述している。これはSQLではなくPL/pgSQLなので、LANGUAGEは plpgsql としている。
PL/pgSQLについては次の記事を参照。
CREATE OR REPLACE FUNCTION get_month_last_day(date) RETURNS double precision AS ' BEGIN RETURN extract(DAY FROM date_trunc(''month'', $1 + interval ''1 month'') - interval ''1 day''); END; ' LANGUAGE plpgsql;
例3:指定された日付が月の最終日かどうかを返す関数
CREATE OR REPLACE FUNCTION is_month_last_day(date) RETURNS boolean AS ' BEGIN RETURN date_trunc(''day'', $1) = date_trunc(''month'', $1 + interval ''1 month'') - interval ''1 day''; END; ' LANGUAGE plpgsql;
参考サイト: PostgreSQL 8.4.4文書 Ⅳ.リファレンス Ⅰ.SQLコマンド CREATE FUNCTION
« PostgreSQLのPREPARE | Main | PL/pgSQL »
「PostgreSQL」カテゴリの記事
- CakePHPのインストール(2015.06.14)
- PHPからPDOでPostgreSQLに接続する(2015.06.09)
- PostgreSQLのインストール その2(2015.03.29)
- PostgreSQLのインストール その1(2015.03.23)
- 列の値を使って日時に「+n日」する(2015.02.04)
「SQL」カテゴリの記事
- 列の値を使って日時に「+n日」する(2015.02.04)
- TIMESTAMP WITH TIME ZONE型(2014.07.20)
- PL/pgSQL(2014.02.16)
- PostgreSQLで自作の関数を定義する(2014.02.15)
- PostgreSQLのPREPARE(2014.02.15)
The comments to this entry are closed.
Comments