PL/SQLの勉強2「Hello World」を深掘りしてみる

2023-11-04

前回はPL/SQLで「Hello World」を出力してみました。

本当に「Hello World」と書いているだけで、すごく簡単なのですが…
よかったら見てみてください。

今回は「Hello World」を例にして
PL/SQLはどんなルールで書くのか?をみていきます。

ブロックなるものがあります

PL/SQLは大きく分けて2つの「ブロック」なるものがあります。
それぞれの役割は、以下の通りです。

  • declare → 変数を定義するところ(宣言部)
  • begin → 処理を書くところ(処理部)

declare(宣言部)について

declare(デクレアと読む…)では「v_str」という変数を定義しています。
PL/SQLで使う変数は、すべてdeclareの中で宣言します。

今日の登場人物は「v_str」さんです!って言っている感じです。

v_strの右にある「varchar2(4000)」は…
変数の型を指定してます。

  • varchar2 → 文字列!
  • 4000 → 4000byteまでなら入れられる!

ってことですね。

変数はこの他にもnumber型やboolean型とか、もっと色々あります。
なんのこっちゃ?な人は調べてみましょう!

begin(処理部)について

begin(ビギンと読む…)ではこんな処理してね〜なことを書いています。
PL/SQLの処理は、すべてbeginの中で書きます。

ここでは「v_str」という変数に文字列を代入して
「v_str」に入っている値を出力しようとしています。

出力の時の「dbms_output.put_line」はおまじないだと思ってください!
そんなもんです、何も考えずに「こういうもんだ!」と思っちゃえばいいんです!

exception(例外部)について

さて…私は先ほど以下のように言いました。

PL/SQLは大きく分けて2つの「ブロック」なるものがあります。

declareとbeginの2つですね。

でも実は、もう一つあります。
exception(エクセプション)というヤツです。
こんな感じに書きます。

declare
  v_str  varchar2(10);
begin
  v_str := 'Hello World';
  dbms_output.put_line(v_str);
exception
  when others then
    dbms_output.put_line('何かしらのエラーが起こったよ!');
end;

exceptionは「エラー」、つまり例外が起こったときに動く部分です。
例えば上の場合、どんな結果が出力されるでしょうか?

「Hello World」が出力されていませんね。

ここで注目して欲しいのが2行目の「v_str varchar2(10);」です。
v_strっていう変数は10byteまでしか持てないとしています。
10byteを超える文字列を代入しようとして、エラーが起きてるんです。

これは私の考えですが…
プログラムはエラーとの戦いです。予期していないことは必ず起こるので、想定外なことが起きたときにどうする?を考えておく必要があります。

以上ですw

今回は「ブロック」なるものについて
そしてその役割についてお話ししていきました。

どうでしたか?
お疲れ様でした〜!

次回もうす〜い内容で書いていければと思いますw

PL/SQL

Posted by kiri