【入門編】 PL/pgSQLの制御構造 – PostgreSQL

こんにちは!データベースの世界へようこそ。

PostgreSQLを触っていると、「ただデータを保存するだけじゃなくて、もっと複雑な計算や判断をデータベースの中で完結させたいな」と思うこと、ありますよね。そんな時に頼りになるのが「PL/pgSQL(ピーエル・ピージーエスキューエル)」というプログラミング言語です。

「プログラムなんて難しそう…」と身構える必要はありません。実は、PL/pgSQLの制御構造って、私たちが普段生活している時の「判断」や「繰り返し」とそっくりなんですよ。今日は、肩の力を抜いて一緒に見ていきましょう。

—

1. 「もし〜なら」で判断する(IF-THEN-ELSE)

まずは一番基本の「IF文」です。これは日常生活の「もし」と同じ。

  • 「もし天気が良ければ、公園に行く」
  • 「そうでなければ、家で本を読む」

これをプログラムに書くと、こんな感じです。

IF 天気 = ‘晴れ’ THEN
公園に行く;
ELSE
家で本を読む;
END IF;

シンプルですよね。条件が増えるときは `ELSIF` を使えば、「もし雨なら傘を持っていく」といった細かい調整も自由自在です。

2. 選択肢から選ぶ(CASE文)

「もし〜なら」がたくさん続いてくると、コードが少し読みづらくなりますよね。そんなときは `CASE` 文の出番です。これは「自動販売機」をイメージすると分かりやすいですよ。

  • ボタンAが押されたら、コーヒーを出す
  • ボタンBが押されたら、お茶を出す
  • ボタンCが押されたら、炭酸水を出す

CASE ボタン
WHEN ‘A’ THEN コーヒーを出す;
WHEN ‘B’ THEN お茶を出す;
WHEN ‘C’ THEN 炭酸水を出す;
END CASE;

スッキリしていて、後から見返した時も「何をしようとしているのか」が一目で分かりますよね。

—

3. ループの魔法:繰り返しの基本

次に、同じ作業を繰り返す「ループ」について話しましょう。これが使えるようになると、データの処理が一気に楽になります。

LOOPとEXIT:終わりを決める

ただ `LOOP` を書くと、無限に繰り返されて大変なことになります。だから、「ここでおしまい!」という出口(`EXIT`)を決めてあげるのが鉄則です。

LOOP
— 何か作業する
EXIT WHEN 条件; — 条件が揃ったらループを抜ける
END LOOP;

WHILEループ:条件が続く限り…

「お腹がいっぱいになるまで食べる」というような、条件が満たされている間だけ繰り返したいときは `WHILE` を使います。

WHILE お腹の空きがある LOOP
ご飯を食べる;
END LOOP;

FORループ:数えながら繰り返す

「1から10まで数える」といった、回数が決まっているときは `FOR` が便利です。

FOR i IN 1..10 LOOP
RAISE NOTICE ‘今の数字は % です’, i;
END LOOP;

—

4. ループの歩き方をコントロールする

最後に、ループの途中で少し「ズル」をする(いい意味で!)テクニックを紹介します。

  • CONTINUE: 「この回はパスして、次の回へ行こう!」という時。
  • EXIT: 「もう用は済んだから、ループ自体を終わらせよう!」という時。

例えば、「10個のデータがあるけど、エラーがあるデータだけは飛ばして進めたい」という時、`CONTINUE` を使うとスマートに処理をスキップできるんです。

—

最後に:完璧を目指さなくて大丈夫!

いかがでしたか?こうして見ると、プログラミングって意外と「私たちが普段頭の中で考えていること」をそのまま言葉にしているだけだと思いませんか?

最初から全てを使いこなそうとせず、まずは `IF` 文で小さな判断をするところから始めてみてください。エラーが出ても大丈夫。それはデータベースが「もう少し詳しく教えてくれるかな?」と話しかけてくれている証拠ですから。

また分からないことがあれば、いつでも聞きに来てくださいね。あなたのデータベースライフが、もっと楽しくなりますように!

コメント

タイトルとURLをコピーしました