このエントリーをはてなブックマークに追加


[smile]PL/pgSQL入門ページに戻る


PL/pgSQLの記述構造

PL/pgSQLとは?」で簡単なPL/pgSQLを実行してみました。
このサンプルをもとに記述構造について以下に記します。

お約束

当サイトに記載されている会社名、製品名などは一般に各社または団体の商標または登録商標です。
当サイトの資料により直接的および間接的障害が生じても一切責任を負いませんので、あらかじめご了承ください。
自己責任のもとで本資料をご利用ください。

CREATE FUNCTION .. DECLARE .. BEGIN .. END .. LANGUAGE plpgsql

PL/pgSQLの構造についての詳細は、PostgreSQLサイトにあるドキュメントを参照してください。
www.postgresql.jpへのリンク

  • PL/pgSQLの構造 本記事では、PL/pgSQLの構造を簡単(簡易)に説明してみます。

PL/pgSQLの構造説明

以下にPL/pgSQLの構造を記します。

CREATE FUNCTION ファンクション名() RETURNS 返却する変数の型 AS $$
DECLARE
    変数などを宣言
BEGIN
    処理を記述
    
    以下のように副ブロックも記述可能
    DECLARE
        変数などの定義
    BEGIN
        処理を記述
    END;

    処理を記述

    RETURN 返却値;
END;
$$ LANGUAGE plpgsql;

上記にPL/pgSQLの記述構造を簡単に記しました。

  • CREATE FUNCTIONで関数名を宣言
  • DECLARE .. BEGIN の間で変数などを宣言
  • BEGIN .. END の間で処理を記述

helloworld.sqlの説明

PL/pgSQLとは?」で公開している、helloworld.sqlを説明してみます。

CREATE OR REPLACE FUNCTION helloworld()
RETURNS
    TEXT
AS $$
DECLARE
    msg text := 'Hello world!';
BEGIN
    RAISE INFO '%', msg;
    RETURN msg;
END
$$ LANGUAGE plpgsql
;
  • CREATE OR REPLACE FUNCTION で helloworld を関数名として宣言しています。
    OR REPLACEを記述している理由は、本ソースを修正し再登録したときに、DROPコマンドが不要になるからです。
  • RETURNS
    返却する型をTEXTと指定してます。
    上記のPL/pgSQLの構造説明とRETURNSの位置が違いますが、改行せずに記述するかしないかの違いです。
    見やすい方を選べばよいでしょう。
    動作は全く同じになります。
  • DECLARE .. BEGIN
    TEXT型のmsg変数を宣言し、'Hello world!' の文字列を指定してます。
  • BEGIN .. END
    Hello world! メッセージの表示とクエリーの結果(本関数の実行結果)としてmsg(='Hello world!')を返却しています。

まとめ

  1. CREATE FUNCTION .. DECLARE .. BEGIN .. END .. LANGUAGE plpgsql の記述になる。
  2. DECLARE後、変数などの宣言を行う
  3. BEGIN .. END で処理を記述する

[smile]PL/pgSQL入門ページに戻る


添付ファイル: filehelloworld.sql 582件 [詳細]

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2016-10-22 (土) 00:13:53