----
⌣''[[PL/pgSQL入門ページに戻る>PL/pgSQL入門]]''
----
* PL/pgSQLの記述構造 [#k9935ea4]
「[[PL/pgSQLとは?>PL/pgSQLとは?]]」で簡単なPL/pgSQLを実行してみました。~
このサンプルをもとに記述構造について以下に記します。


#contents
#htmlinsertpcsp(db-top.html,db-sp.html)

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


* CREATE FUNCTION .. DECLARE .. BEGIN .. END .. LANGUAGE plpgsql [#e116a6a5]
PL/pgSQLの構造についての詳細は、PostgreSQLサイトにあるドキュメントを参照してください。~
[[www.postgresql.jp>http://www.postgresql.jp/]]へのリンク
-[[PL/pgSQLの構造>https://www.postgresql.jp/document/9.4/html/plpgsql-structure.html]]
本記事では、PL/pgSQLの構造を簡単(簡易)に説明してみます。

** PL/pgSQLの構造説明 [#g785fe14]
以下に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の説明 [#te141590]
「[[PL/pgSQLとは?>PL/pgSQLとは?]]」で公開している、helloworld.sqlを説明してみます。
#ref(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!')を返却しています。

* まとめ [#m21971ff]
+ CREATE FUNCTION .. DECLARE .. BEGIN .. END .. LANGUAGE plpgsql の記述になる。
+ DECLARE後、変数などの宣言を行う
+ BEGIN .. END で処理を記述する

----
⌣''[[PL/pgSQL入門ページに戻る>PL/pgSQL入門]]''

#htmlinsertpcsp(db-btm.html,db-sp.html)

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS