CREATE FUNCTION文による関数定義
PostgreSQL v8.3でCREATE FUNCTION文を使って関数を定義したいだけなのに、えらく苦労してしまったので、メモ。
PL/pgSQLを使って関数を定義するための準備
シェルで以下のようなコマンドを実行する。(以下の例はWindowsのコマンドプロンプトの場合)
CD /D <PostgreSQLインストールフォルダ>\bin createlang.exe -U ユーザID plpgsql データベース名
引数なしの関数(LANGUAGE 'plpgsql')
CREATE FUNCTION hoge_plpgsql() RETURNS INTEGER AS ' DECLARE retval INTEGER; BEGIN SELECT 1 INTO retval; RETURN retval; END; ' LANGUAGE 'plpgsql';
引数なしの関数(LANGUAGE 'SQL')
CREATE FUNCTION hoge_sql() RETURNS INTEGER AS ' SELECT 1 ' LANGUAGE 'SQL';
引数ありの関数(LANGUAGE 'plpgsql')
CREATE FUNCTION hoge(INTEGER) RETURNS INTEGER AS ' DECLARE param1 ALIAS FOR $1; retval INTEGER; BEGIN SELECT 1 + param1 INTO retval; RETURN retval; END; ' LANGUAGE 'plpgsql';
引数ありの関数(LANGUAGE 'SQL')
CREATE FUNCTION hoge_sql(INTEGER) RETURNS INTEGER AS ' SELECT 1 + $1 ' LANGUAGE 'SQL';