目次

はじめに

想定読者
免責事項
表記関係について
底本について

第1章 はじめてのPL/pgSQL

1.1 PL/pgSQLの概要
1.2 使用できるようにしてみましょう
1.3 はじめての「Hello PL/pgSQL」

第2章 PL/pgSQLの基礎

2.1 PL/pgSQLの利点
2.2 無名コードブロック
2.3 CREATE FUNCTION
2.4 DROP FUNCTION
2.5 PL/pgSQLの構造
2.6 文末にセミコロン
2.7 コメント
2.8 RAISE文

第3章 変数

3.1 変数の定義方法
3.2 変数の代入方法
3.3 変数のデータ型
3.4 %TYPE、%ROWTYPE
3.5 定数

第4章 制御構造

4.1 条件分岐
4.2 反復処理
4.3 順序制御

第5章 テーブルからデータを取り出す

5.1 SELECT INTO
5.2 カーソル

第6章 例外処理

6.1 例外の発生
6.2 例外の捕捉
6.3 例外の種類
6.4 例外情報の取得
6.5 独自の例外?
6.6 ロールバック

付録A ストアド・プロシージャ

A.1 ストアド・プロシージャの作り方
A.2 CALL
A.3 トランザクション管理

あとがき

はじめに

 本書は、PostgreSQLでストアド・ファンクションを作成するための言語である「PL/pgSQL」の基本的な文法を解説したものです。

 OracleのPL/SQLを専門に解説した市販の技術書は存在しますが、同種の言語であるPL/pgSQLを専門に扱っているものはほとんどありません。もっぱらPostgreSQLの解説書のおまけのような1項目として扱われることが多いのが現状です。(そもそもPostgreSQLの書籍がOracleやMySQLに比べて少ないのですが……。)

 現状、PL/pgSQLについて十分な知識を得たいのであれば、公式マニュアルにあたるしかないのが現状です。

 公式マニュアルは構文などは充実しており、十分なスキルを持った人であればそれで十分です。しかし、「とりあえずどう書いたら動くものができるのか?」という点で、PL/pgSQL初心者には少々使いにくくなっています。

 本書は、これからPL/pgSQLを使ってみようという人が「マニュアルを読む前に読んでみる本」として構成しています。

 そのため、公式マニュアルとは記載の順序を変えたり、内容を省いているところもあります。本書を読み終わったあとマニュアルを読めば、「ここはこういう記述方法もあるのか」「こんな機能もあるのか」と、より理解が深まるでしょう。

 筆者が本書を書こうと思ったきっかけは、Oracleを使用している方と話したときに、「PostgreSQLにもOracleのPL/SQLと似たようなPL/pgSQLというものがある」「PostgreSQLでもストアド・ファンクションのようなことができるんですね」といわれたことです。

 自分はPostgreSQLをよく使用しているからPL/pgSQLを知っているが、もしかしてPostgreSQLを知らない人は知らないのだろうか。それならば、PostgreSQLでもストアド・ファンクションが使用できること、そしてその文法も広めたほうがいいのではないか。と思い立ちました。

想定読者

 本書は次のような読者を想定しています。

 ・LinuxでPostgreSQLの操作がある程度できる

  ─PostgreSQLのコマンドの細かい説明は省略しています。「LinuxでPostgreSQLを使っているけど、PL/pgSQLは書いたことないから興味がある」という方がターゲットです。

 ・プログラミングの経験がある

  ─たとえば「変数とは何か」「引数、戻り値とは何か」のような、プログラム経験者であれば知っていて当然と思われる内容は説明していません。

 ・SQLを書いた経験がある

  ─SELECT文やINSERT文の文法や意味など、個別のSQLの内容は説明していません。普通のSQLに慣れた人が次のステップアップでストアド・ファンクションを学ぶ際の第一歩として読むことを想定しています。

 ・PL/pgSQLはあまり詳しくない

  ─すでにバリバリPL/pgSQLでユーザー定義関数を書いている方には退屈な内容かもしれません。

 なお、本書ではLinuxでPostgreSQL 9.6以降を操作することを前提としています。本書執筆時点の最新バージョンはPostgeSQL 11ですが、9.6で動くものが11では動かないということはありません。本書で説明する基本的な部分は変わっていませんので、問題ないと思われます。

免責事項

 本書に記載された内容は、情報の提供のみを目的としています。したがって、本書を用いた開発、製作、運用は、必ずご自身の責任と判断によって行ってください。これらの情報による開発、製作、運用の結果について、著者はいかなる責任も負いません。

表記関係について

 本書に記載されている会社名、製品名などは、一般に各社の登録商標または商標、商品名です。会社名、製品名については、本文中では©、®、™マークなどは表示していません。

底本について

 本書籍は、技術系同人誌即売会「技術書典5」で頒布されたものを底本としています。

試し読みはここまでです。
この続きは、製品版でお楽しみください。