はじめに
第1章 はじめてのPL/pgSQL
第2章 PL/pgSQLの基礎
第3章 変数
第4章 制御構造
第5章 テーブルからデータを取り出す
第6章 例外処理
付録A ストアド・プロシージャ
あとがき
本書は、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」で頒布されたものを底本としています。