PL/SQL - 関数:初級者ガイド

こんにちは、志を抱くプログラマーさんたち!今日は、PL/SQL関数の世界に楽しく飛び込んでみましょう。コードを書いたことがない人も心配しないでください。私はあなたの親切なガイドとして、一歩一歩進んでいきます。このチュートリアルの終わりまでに、プロのように関数を作成し、呼び出すことができるようになるでしょう!

PL/SQL - Functions

PL/SQL関数とは?

まず、関数とは何かを理解しましょう。関数はコードの中の小さな助け舟です。メインプログラムの中のミニプログラムのように、特定のタスクを実行します。情報(これを入力またはパラメータと呼びます)を渡すと、それを基に処理を行い、結果を返します。

例えば、円の面積を計算できるロボットアシスタント(FunctionBotと呼びましょう)を思い浮かべてください。FunctionBotに円の半径を伝えると、すぐに計算を行い、面積を教えてくれます。これがプログラミングにおける関数の基本的な役割です!

関数の作成

それでは、PL/SQLで自分の関数を作成する方法を学びましょう。基本的な構造は以下の通りです:

CREATE [OR REPLACE] FUNCTION 関数名
[(パラメータ名 [IN | OUT | IN OUT] 型 [, ...])]
RETURN 返り値の型
IS
-- 宣言セクション
BEGIN
-- 実行セクション
RETURN (値);
END;
/

これを見て驚かないでください!以下に分解します:

  1. CREATE [OR REPLACE] FUNCTION:Oracleに新しい関数を作成(または既存のものを置き換える)ことを伝えます。
  2. 関数名:自分の関数に名前を付けます。
  3. (パラメータ名 [IN | OUT | IN OUT] 型 [, ...]):関数が受け取る入力を指定します。
  4. RETURN 返り値の型:関数が返すデータの型を指定します。
  5. IS:関数ヘッダと本体を区切るキーワードです。
  6. BEGINENDキーワードは、関数の主要なコードをくくります。
  7. RETURN (値):関数が返すべきものを指定します。

それでは、円の面積を計算するシンプルな関数を作成してみましょう:

CREATE OR REPLACE FUNCTION calculate_circle_area(radius NUMBER)
RETURN NUMBER
IS
pi CONSTANT NUMBER := 3.14159265359;
area NUMBER;
BEGIN
area := pi * radius * radius;
RETURN area;
END;
/

この関数では以下のことが行われています:

  1. calculate_circle_areaという名前の関数を作成しています。
  2. 1つの入力パラメータ:radius(型はNUMBER)を受け取ります。
  3. NUMBER(円の面積)を返します。
  4. piという定数を定義しています。
  5. 円の面積の公式(π * r^2)を使って計算を行います。
  6. 最後に計算された面積を返します。

関数の呼び出し

関数を作成したら、どのように使用するのでしょうか?これは「関数の呼び出し」と呼ばれます。PL/SQLでは、関数を以下のような方法で呼び出すことができます:

1. SELECT文内で:

SELECT calculate_circle_area(5) AS circle_area FROM DUAL;

これは半径5の円の面積を返します。

2. PL/SQLブロック内で:

DECLARE
result NUMBER;
BEGIN
result := calculate_circle_area(7);
DBMS_OUTPUT.PUT_LINE('円の面積は: ' || result);
END;
/

これは半径7の円の面積を計算し、結果を表示します。

3. より大きな式の一部として:

DECLARE
radius NUMBER := 10;
diameter NUMBER;
BEGIN
diameter := 2 * radius;
DBMS_OUTPUT.PUT_LINE('直径 ' || diameter || ' の円の面積は: ' || calculate_circle_area(radius));
END;
/

これは直径を計算し、その円の面積を求めます。

PL/SQL再帰関数

それでは、もう少し高度な話題に進みましょう:再帰関数。再帰関数は、自分自身を呼び出す関数です。ロシアのメイキャップ人形のように、開けると中に別の人形が現れます!

以下は、数の階乗を計算する再帰関数の例です。5の階乗(5!と書かれます)は5 4 3 2 1 = 120です。

それでは、階乗を計算する再帰関数を書いてみましょう:

CREATE OR REPLACE FUNCTION factorial(n NUMBER)
RETURN NUMBER
IS
BEGIN
IF n = 0 OR n = 1 THEN
RETURN 1;
ELSE
RETURN n * factorial(n - 1);
END IF;
END;
/

これを分解すると:

  1. nが0または1の場合、1を返します(これは基準ケースです)。
  2. それ以外の場合、nを(n-1)の階乗に乗じて返します。
  3. この関数は自分自身を呼び出し続け、基準ケースに達するまで続けます。

この関数を使うには以下のようにします:

BEGIN
DBMS_OUTPUT.PUT_LINE('5の階乗は: ' || factorial(5));
END;
/

これは「5の階乗は: 120」と表示します。

普通のPL/SQL関数メソッド

以下に、PL/SQL関数でよく使われるメソッドの一覧を示します:

メソッド 説明
CREATE FUNCTION 新しい関数を作成 CREATE FUNCTION my_func...
REPLACE FUNCTION 既存の関数を置き換え CREATE OR REPLACE FUNCTION my_func...
RETURN 返り値の型と値を指定 RETURN NUMBER; ... RETURN result;
CALL 関数を呼び出す SELECT my_func(5) FROM DUAL;
DROP FUNCTION 関数を削除 DROP FUNCTION my_func;
EXECUTE 関数を実行 EXECUTE my_func(10);

練習は完璧を生みます!これらの関数を試してみてください。入力を変更したり、関数を組み合わせたり、独自の関数を作成してみてください。これらを弄ぶことで、どのように動作するかをより理解することができます。

そして、ここまででPL/SQL関数の世界への第一歩を踏み出しました。シンプルな計算から再帰的な問題解決まで、関数はあなたのコードを効率的にし、管理しやすくする強力なツールです。探索を続け、コードを書き続け、そして何より楽しむことを忘れずに!

Credits: Image by storyset