- 関数の作成と呼び出し:
関数を作成するためには、まずCREATE FUNCTIONステートメントを使用します。関数の定義には戻り値のデータ型、パラメータの定義、および関数の本体が含まれます。次に、関数を呼び出すためにはSELECTステートメント内で関数を使用します。
例:
-- 関数の作成
CREATE FUNCTION calculate_total(price NUMBER, quantity NUMBER) RETURN NUMBER IS
total NUMBER;
BEGIN
total := price * quantity;
RETURN total;
END;
/
-- 関数の呼び出し
SELECT calculate_total(10, 5) FROM dual;
- 関数の入れ子:
関数は他の関数の中で使用することもできます。これにより、複雑な処理をモジュール化して再利用できます。
例:
-- 入れ子の関数
CREATE FUNCTION calculate_discounted_total(price NUMBER, quantity NUMBER) RETURN NUMBER IS
discounted_total NUMBER;
discount_rate NUMBER;
FUNCTION calculate_discount_rate(quantity NUMBER) RETURN NUMBER IS
rate NUMBER;
BEGIN
IF quantity > 10 THEN
rate := 0.1; -- 10%の割引率
ELSE
rate := 0.05; -- 5%の割引率
END IF;
RETURN rate;
END;
BEGIN
discount_rate := calculate_discount_rate(quantity);
discounted_total := price * quantity * (1 - discount_rate);
RETURN discounted_total;
END;
/
-- 入れ子の関数を使用した呼び出し
SELECT calculate_discounted_total(10, 15) FROM dual;
- 関数のオーバーロード:
Oracle 12Cでは、関数のオーバーロードがサポートされています。つまり、同じ名前の関数を異なるパラメータセットで複数作成できます。
例:
-- オーバーロードされた関数
CREATE FUNCTION calculate_total(quantity NUMBER) RETURN NUMBER IS
total NUMBER;
BEGIN
total := quantity;
RETURN total;
END;
/
CREATE FUNCTION calculate_total(price NUMBER, quantity NUMBER) RETURN NUMBER IS
total NUMBER;
BEGIN
total := price * quantity;
RETURN total;
END;
/
-- オーバーロードされた関数の呼び出し
SELECT calculate_total(5) FROM dual; -- 第1の関数が呼び出される
SELECT calculate_total(10, 5) FROM dual; -- 第2の関数が呼び出される
これらはOracle 12Cでの関数呼び出しのいくつかの例です。関数はデータベース内で処理をモジュール化し、再利用可能なコードを作成するための強力なツールです。さまざまなシナリオに応じて関数を作成し、効率的なデータベースアプリケーションを構築することができます。