1.テーブル結合
2. ビュー(VIEW)の定義と削除
3.ストアドプロシージャ
ストアドプロシージャとは、SQLで記述した一連の処理をひとつのプログラムにまとめて、データベース管理システム(RDBMS)に保存したものです。複雑なSQLなどの呼び出しを、ひとつの処理単位にまとめて、簡単に呼び出すことができます。例えば、ひとつのプロシージャには複数のSQLが含まれていたり、一般的なプログラムにあるように繰り返しや条件分岐などの制御構造を持つこともできます。また、引数をとって処理をしたり、処理結果を返すこともできます。
PostgreSQLではストアドプロシージャのことをユーザー定義関数と呼んでいます。PostgreSQLのユーザー定義関数は複数の記述言語を使うことができ、独自の記述言語を使用することが多い商用RDBMSよりも選択肢が広いことが特徴です。標準で入っているものだけでも単純なSQLとC言語、PL/Tcl(Tcl言語)、 PL/Perl(Perl言語)、PL/pgSQLがサポートされています。PostgreSQLのPL/pgSQLは、OracleのPL/SQLと完全互換ではありませんが、PL/SQLと同じようにSQLに様々な拡張仕様を追加したプログラミング言語です。ここではこれらの中でも最もドキュメントが豊富で、多くのユーザーに支持されているPL/pgSQLについて紹介したいと思います。
まずはPL/pgSQLを利用するデータベースに対して、createlangコマンドを使ってPL/pgSQLを登録します。この操作はデータベースに対して一度だけ実行します。
データベースossdbにPL/pgSQLを登録する場合、次のようなコマンドを実行します。
$createlang plpgsql -d ossdb;
※createlangコマンドの解説については、以下のリファレンスマニュアルを参照して下さい。
http://www.postgresql.jp/document/9.1/html/app-createlang.html
次にCREATE FUNCTION文で関数を定義します。
構文は以下の通りです。
CREATE [OR REPLACE] FUNCTION 関数名(引数) RETURNS [SETOF] 戻り値 AS $$
関数の記述
$$ LANGUAGE 使用言語;
OR REPLACEを指定すると、既存の関数を上書きします。「戻り値」には、integerやtextなどのデータ型を指定できます、また、テーブル名を指定することで、そのテーブルの行と同じデータを戻り値とすることができます。複数の戻り値を取得する場合は、SETOFを指定します。「使用言語」には、関数を記述する言語を指定します。関数定義の詳しい内容については、リファレンスマニュアルを参考にして下さい。
3‐1.ユーザー定義関数の作成
例1
int型の引数に対して1を加算して返却するだけの関数get_count_numを作成します。
以下のSQLを実行してください。
CREATE FUNCTION get_count_num(num integer) RETURNS integer AS
$$
DECLARE
count_num integer;
BEGIN
count_num = num + 1;
RETURN count_num;
END;
$$
LANGUAGE plpgsql;
まとめ
●SQL基礎IIで紹介したテーブル結合、ビュー(VIEW)定義と削除及びストアドプロシージャについては、以下のPostgreSQL 日本語ドキュメントのリファレンスも合わせてご覧ください。
1.第7章 問い合わせ
http://www.postgresql.jp/document/9.1/html/queries-table-expressions.html
2.第 3章 高度な諸機能
http://www.postgresql.jp/document/9.1/html/tutorial-views.html
3.CREATE VIEW
http://www.postgresql.jp/document/9.1/html/sql-createview.html
4.DROP VIEW
http://www.postgresql.jp/document/9.1/html/sql-dropview.html
5.第39章 PL/pgSQL-SQL手続き言語
http://www.postgresql.jp/document/9.1/html/plpgsql.html
執筆:
神谷 貴広 氏(OSS-DB Silver認定者)株式会社オークニー ジオソリューション事業部
PostGISを含めたFOSS4G(Free Open Source Software for Geospatial)ソフトウェアを活用して、地図、位置情報を組み合わせたアプリケーションの設計・開発に従事。一方で、クラウド、スマートフォン、ソーシャルメディアと言った新しい価値を世の中が求める中、位置情報、地図を絡めた新しいサービスを模索中。
アドバイザー:
森 亮 氏 株式会社オークニー代表取締役
2002年にオークニーを設立し、代表取締役に就任。マッピング・ GIS・LBS・ITS関連プロジェクトのビジネスコンサルティングを経て、現在は会社経営の傍ら、『入門Webマッピング』(Tyler Mitchell原著;オライリー・ジャパン発行)の翻訳、Open Source Geospatial財団日本支部の代表者を務めるなど、FOSS4G(オープンソース地理空間ソフトウェア)の普及活動に取り組んでいる。
監修:
松田 神一
© EDUCO All Rights Reserved.