すべてのプロダクト
Search
ドキュメントセンター

ApsaraDB for OceanBase:関数の作成

最終更新日:Jan 21, 2025

ODC は視覚化された関数作成をサポートしています。このトピックでは、ODC を使用して関数を 作成する方法について説明します。

概要

関数は、データベースで定義されたサブプログラムです。ビルトイン SQL 文を使用して関数を呼び出すことができます。ビルトイン関数がビジネス要件を満たしていない場合、OceanBase 開発者センター ( ODC ) では、関数を 作成することができます。ユーザー定義関数は、計算や特殊な操作を実行するのに役立つだけでなく、コーディングの冗長性を軽減してプログラムの可読性を向上させることもできます。

関数は、データベースのストアドプロシージャに似た手続き型オブジェクトです。ストアドプロシージャと同様に、関数は SQL 文と手続き型文のコード スニペットであり、アプリケーションや他の SQL 文から呼び出すことができます。

ユーザー定義関数とストアドプロシージャの違い:

  • 関数は 1 つの結果のみを返し、1 つの結果を生成するデータ処理に適しています。ストアドプロシージャはゼロ個または複数の結果を返し、一括挿入および一括更新に適しています。

  • 文を使用して関数を呼び出すことができます。 文を使用してストアドプロシージャを呼び出すことができます。SELECT 文を使用できます。ストアドプロシージャは、CALL ステートメント。

image

前の図に示すように、次の 6 つのステップで関数を 作成できます。

  1. 関数名を指定します。

  2. 戻り値のデータ型を指定します。

  3. パラメーターを指定します。

  4. 新しい関数のパラメーターを確認します。

  5. 関数を編集します。

  6. 関数作成を完了します。

次の例では、ODC コンソールで function_emp という名前の関数が 作成され、従業員 ID に基づいて従業員テーブルから従業員名を取得します。 function_emp 関数には、INT 型の id パラメーターが含まれています。

説明

このトピックで使用されているデータは例です。必要に応じて実際のデータに置き換えることができます。

手順

ステップ 1: 関数名を指定します。

ODC コンソールにログインし、接続名をクリックして対応する接続管理ページに移動します。左側のナビゲーションウィンドウで をクリックすると、関数の一覧が表示されます。関数を 作成するには、関数一覧の右上隅にある + をクリックするか、上部のナビゲーションバーの をクリックします。関数左側のナビゲーション ウィンドウで関数のリストを取得します。関数を新規作成するには、関数リストの右上隅にある + をクリックするか、作成上部のナビゲーション バーにあります。

image

ステップ 2: 戻り値のデータ型を指定します。

ステップ 3: パラメーターを指定します。

  1. パラメーターは、関数の呼び出し時に関数に渡される情報を指定します。

    • Oracle モードでは、次のフィールドを指定します。 名前モード種類、および 既定値

    • MySQL モードでは、次のフィールドを指定します: 名前種類、および 長さ

  2. 次の 3 つの方法のいずれかを使用してパラメーターを指定できます。

方法

説明

クイックアクセスのツールバーを使用する

クイックアクセスのツールバーでは、パラメーターの追加、削除、上下移動ができます。

行番号をクリックする

  • 行番号をクリックすると、行を選択して、行の削除や上下移動ができるクイックアクセスのツールバーを表示できます。

  • 行番号をクリックして行を選択し、行をドラッグして順序を調整できます。

右クリック

マウスを右クリックして行全体を選択し、行をコピーまたは下に移動します。

  1. パラメーターのモードを指定する必要があります。

    パラメーターモード設定は MySQL モードでは使用できません。Oracle モードでは、、、 のパラメーターモードがサポートされています。入力出力、および INOUT

パラメーター

IN

入力パラメーターを示します。関数が呼び出されると、入力パラメーターが関数に渡され、関数の実行で使用されます。

OUT

出力パラメーターを示します。関数が呼び出されると、出力パラメーターの値は無視され、空の値が関数に渡されます。関数本体の出力パラメーターは変更できます。変更された結果は返され、出力パラメーターが表す引数に渡されます。

INOUT

入出力パラメーターを示します。入出力パラメーターは、入力パラメーターと出力パラメーターの両方です。

説明

Oracle モードでは、関数とストアドプロシージャの両方で IN、OUT、および INOUT モードがサポートされています。MySQL モードでは、関数は IN モードのみをサポートし、ストアドプロシージャは IN、OUT、および INOUT モードをサポートします。

ステップ 4: 新しい関数のパラメーターを確認します。

[クリック] OK[関数を作成] ページに移動します。

ステップ 5: 関数を編集します。

image

[関数の作成] ページで関数文を編集します。[関数の作成] ページで、作成された関数の SQL 文を編集できます。構文:

CREATE FUNCTION <関数名> ([ <パラメーター 1> <型 1> [ , <パラメーター 2> <型 2>] ] …)
RETURNS <型>
<関数本体>

パラメーター:

パラメーター

説明

<関数名>

ユーザー定義関数の名前。

重要

ユーザー定義関数の名前は、ストアドプロシージャの名前と同じにすることはできません。

<パラメーター><型>

関数のパラメーター。このフィールドには、名前と型のみが含まれます。IN、OUT、または INOUT キーワードは指定できません。

RETURNS<型>

戻り値のデータ型です。<type>は、戻り値のデータ型を指定します。

重要

RETURN VALUE 文の SELECT 文は、単一行、単一列の値のみを返します。

<関数本体>

ユーザー定義関数の本文。関数本文には、RETURN <value>文が含まれている必要があります。ここで、<value>はユーザー定義関数の戻り値を指定します。

例:

CREATE FUNCTION `function_emp` ( `id` int(45)) RETURNS VARCHAR(300)

-- 関数本体の開始。
BEGIN

-- 変数を宣言します。
DECLARE
  a VARCHAR(300);

-- 変数に値を代入します。
SELECT
  name INTO a
FROM
  employee
WHERE
  emp_no = id;

-- 戻り値。
RETURN a;

-- 関数本体の終了。
END

ステップ 6: 関数作成を完了します。

[作成] をクリックして関数を 作成 します。ユーザー定義関数の作成後、ビルトイン関数を呼び出すのと同様に、SELECT 文を使用して呼び出すことができます。

説明
関数を管理するには、左側のナビゲーションウィンドウで関数名を右クリックし、コンテキストメニューから必要な操作を選択します。コンテキストメニューには、、、、、、、、、 のオプションがあります。、、 は MySQL モードではサポートされていません。詳細については、「」をご参照ください。表示作成[編集]コンパイルデバッグ実行ダウンロード削除、および 更新編集コンパイル、および デバッグは MySQL モードではサポートされていません。詳細については、「関数を作成する

構文:

SELECT <関数名> ([<パラメーター> [,...]])

例:

SELECT function_emp(2);

image

参照