ODC は視覚化された関数作成をサポートしています。このトピックでは、ODC を使用して関数を 作成する方法について説明します。
概要
関数は、データベースで定義されたサブプログラムです。ビルトイン SQL 文を使用して関数を呼び出すことができます。ビルトイン関数がビジネス要件を満たせない場合、OceanBase Developer Center (ODC) では関数を 作成できます。ユーザー定義関数は、いくつかの計算や特殊な操作の実装に役立つだけでなく、コーディングの冗長性を軽減してプログラムの可読性を向上させます。
関数は、データベースのストアドプロシージャに似た手続き型オブジェクトです。ストアドプロシージャと同様に、関数は SQL 文と手続き型文のコード スニペットであり、アプリケーションや他の SQL 文から呼び出すことができます。
ユーザー定義関数とストアドプロシージャの違い:
関数は 1 つの結果のみを返し、1 つの結果を生成するデータ処理に適しています。ストアドプロシージャはゼロ個または複数の結果を返し、一括挿入および一括更新に適しています。
SELECT文を使用して関数を呼び出すことができますが、ストアドプロシージャはCALL文を使用して呼び出します。

前の図に示すように、次の 6 つの手順で関数を 作成できます。
1. 関数名を指定する。
2. 戻り値のデータ型を指定する。
3. パラメーターを指定する。
4. 関数の作成を確認する。
5. 関数情報を編集する。
6. 関数の作成を完了する。
手順
次の例では、ODC コンソールで function_emp という名前の関数が 作成され、従業員 ID に基づいて従業員テーブルから従業員名を取得します。 function_emp 関数には、INT 型の id パラメーターが含まれています。手順:
手順 1:関数名を指定する
ODC にログインし、接続名をクリックして対応する接続管理ページに移動します。左側のナビゲーションウィンドウで [関数] をクリックすると、関数の一覧が表示されます。関数を 作成するには、関数一覧の右上隅にある + をクリックするか、上部のナビゲーションバーの [作成] をクリックします。

手順 2:戻り値のデータ型を指定する
データ型の詳細については、「OceanBase データベース開発者ガイド」をご参照ください。
手順 3:パラメーターを指定する
パラメーターは、関数の呼び出し時に関数に渡される情報を指定します。
Oracle モードでは、次のフィールドを指定します。[名前]、[モード]、[種類]、[既定値]。
MySQL モードでは、[名前]、[型]、[長さ] の各フィールドを指定します。
次の 3 つの方法のいずれかを使用してパラメーターを指定できます。
方法
説明
クイックアクセスのツールバーを使用する
クイックアクセスのツールバーでは、パラメーターの追加、削除、上下移動ができます。
行番号をクリックする
行番号をクリックして行を選択すると、行の削除や上下移動ができるクイックアクセスのツールバーが表示されます。
行番号をクリックして行を選択し、行をドラッグして順序を調整できます。
右クリックする
行をコピーするか、1 行下に移動する:ポインターをドラッグして行を選択し、右クリックして、表示されるコンテキストメニューから [コピー] または [下へ移動] を選択します。
セルをコピーする:セルを選択し、右クリックして、表示されるコンテキストメニューから [コピー] を選択します。
パラメーターのモードを指定する必要があります。
パラメーターモード設定は MySQL モードでは使用できません。Oracle モードでは、IN、OUT、INOUT のパラメーターモードがサポートされています。
モード
説明
IN
入力パラメーターを示します。関数が呼び出されると、入力パラメーターが関数に渡され、関数の実行で使用されます。
OUT
出力パラメーターを示します。関数が呼び出されると、出力パラメーターの値は無視され、空の値が関数に渡されます。関数本体の出力パラメーターは変更できます。変更された結果は返され、出力パラメーターが表す引数に渡されます。
INOUT
入出力パラメーターを示します。入出力パラメーターは、入力パラメーターと出力パラメーターの両方です。
説明Oracle モードでは、関数とストアドプロシージャの両方で IN、OUT、INOUT モードがサポートされています。MySQL モードでは、関数は IN モードのみをサポートし、ストアドプロシージャは IN、OUT、INOUT モードをサポートします。
手順 4:関数の作成を確認する
[OK] をクリックして、関数作成ページに移動します。
手順 5:関数情報を編集する

[関数の作成] ページで関数文を編集します。
さらに、編集ページのツールバーには次のボタンがあります。
ボタン | 説明 |
フォーマット | このボタンをクリックすると、選択した SQL 文または現在の SQL ウィンドウのすべての SQL 文に、インデント、改行、キーワードのハイライトなどのフォーマットが適用されます。 |
検索と置換 | このボタンをクリックし、検索フィールドにテキストを入力して特定のコンテンツを検索し、置換フィールドにテキストを入力して見つかったコンテンツを置換します。 |
元に戻す | このボタンをクリックすると、最後の操作が元に戻されます。 |
やり直し | このボタンをクリックすると、元に戻す 操作が反転されます。 |
大文字と小文字の区別 | システムは、すべて大文字、すべて小文字、最初の文字を大文字にする の 3 つの capitalization オプションをサポートしています。対応するオプションをクリックして、スクリプトで選択した文を目的の大文字小文字形式に変換します。 |
インデント | 選択した文にインデントを追加したり、インデントを削除したりできます。 |
コメント | コメントを追加をクリックして、選択した文をコメントに変換するか、コメントを削除をクリックして、コメントを SQL 文に変換できます。 |
IN 値の変換 | A B などの形式を ('A','B') 形式に変換できます。 |
[関数の作成] ページで、作成された関数の SQL 文を編集できます。構文:
CREATE FUNCTION <関数名> ([ <パラメーター 1> <型 1> [ , <パラメーター 2> <型 2>] ] …)
RETURNS <型>
<関数本体>パラメーター:
パラメーター | 説明 |
<関数名> | ユーザー定義関数の名前。 重要 ユーザー定義関数の名前は、ストアドプロシージャの名前と同じにすることはできません。 |
<パラメーター><型> | 関数の パラメーター。 このフィールドには、名前と型のみが含まれます。IN、OUT、または INOUT キーワードを指定することはできません。 |
RETURNS<型> | 戻り値のデータ型。 重要 RETURN VALUE 文の SELECT 文は、単一行、単一列の値のみを返します。 |
<関数本体> | ユーザー定義関数の本体。 関数本体には |
例:
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 キーワードを使用して呼び出すことができます。
関数を管理するには、左側のナビゲーションウィンドウで関数名を右クリックし、コンテキストメニューから必要な操作を選択します。コンテキストメニューには、[表示]、[作成]、[編集]、[コンパイル]、[デバッグ]、[実行]、[ダウンロード]、[削除]、[更新] のオプションがあります。
詳細については、「関数の管理」をご参照ください。
構文:
SELECT <関数名> ([<パラメーター> [,...]])例:
SELECT function_emp(2);MySQL モード

Oracle モード
重要Oracle モードでは、ユーザー定義関数に OUT パラメーターが含まれている場合、
CALL文を使用して関数を呼び出す必要があります。関数一覧の黄色のアイコン
は、エラーまたはアラートを示します。