こんにちは!データベースの世界へようこそ。
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` 文で小さな判断をするところから始めてみてください。エラーが出ても大丈夫。それはデータベースが「もう少し詳しく教えてくれるかな?」と話しかけてくれている証拠ですから。
また分からないことがあれば、いつでも聞きに来てくださいね。あなたのデータベースライフが、もっと楽しくなりますように!
コメント