はじめに
筆者はエンジニア歴が2年目のひよっこプログラマです。よくSQLは触りますがPL/SQLはほぼ触れておらず、前の案件で初めて遭遇しました。自習しようと検索をかけてみると意外と記事や動画、本なども少なく当初は面食らった記憶があります…。そこで!今回は少しでもPL/SQLの情報が増えるよう願いをこめ、まずは超入門編としてソースコードなども使わず、前提知識の紹介をしていこうと思います!
PL/SQLとは?
そもそもPL/SQLというのは、オラクル社のプログラミング言語なのですがSQL単体では難しいような複雑な処理をできるようにしたものです。難しく言うと、非手続き型であるSQLを手続き型に拡張した言語ですね。
なんだか難しそうな響き…と感じる方もいるかもしれません。ですが構造は4つのキーワードで構成されており、記述もSQLに繋がるような部分もあり意外と親近感が湧いてくる言語なんです。(筆者だけかもしれませんが…)
メリット
まずはPL/SQLのメリットを大きく3つに分けて紹介していきたいと思います
➀移植性
1つ目は移植性に優れていることです
LinuxやWindowsなどOSが違っていてもOracleが動作する環境さえあれば実行できます。なので環境を意識してプログラムを修正したりせず、開発やメンテナンスができちゃうという生産性の高さが特徴です。
➁Oracleとの親和性
2つ目はOracleとの親和性の高さです
前述したようにPL/SQLはオラクル社が開発した言語なのでOracleで使えるSQLデータ型を全てサポートしています。そのため、SQL間での変換作業がいらず、データのやりとりも効率的かつ柔軟にできます。
➂パフォーマンス
最後3つ目がパフォーマンスに優れているという点です
他の言語でSQLを実行する場合SQLは文単位で送信されるため、発行する文が多ければ多いほど当然処理が増えパフォーマンスに大きな影響を与えます。一方PL/SQLはブロック内の記述も含めてプログラム単位で一括送信し、処理をします。そのため他の言語と比べ、負荷が小さく効率的にプログラムを実行することが可能となっているんです。
また、PL/SQLはブロックに名前をつけて解析済みの状態でOracleに格納することができるため、さらに負荷を軽減させることも可能です。
基本構造
最後にPL/SQLの基本構造を簡単に紹介したいと思います
PL/SQLの構造は大きな塊で構成されているのが大きな特徴です。ブロック構造化言語と呼ばれており、PL/SQLで作ったプログラムのことはPL/SQLブロックと呼びます。ブロックの中には以下の4つのキーワードで構成されています
・DECLARE:プログラムで使用する変数などのオブジェクトを定義する部分(宣言部)
・BEGIN:具体的な実行内容を記述する部分(実行部)
・EXCEPTION:例外処理を記述する部分(例外処理部)
・END;:終了を宣言
特に定義するものや処理を指定する必要がなければ、宣言部と例外処理部の記述は省略することもできます!また、実行部の中にさらにPL/SQLのブロックを埋め込む(ネストする)ことも可能です。
おわりに
今回は入門ということで具体的なコードの書き方などよりもっと前提の知識を備忘録も兼ねて書いてみました。今後ももし機会があればさらに内容を進めていけたらなと思います!自分自身でもいつ遭遇しても身構えずに書いたり修正できるよう都度触れていきたいと思います