OceanBase Developer Center(ODC)は、視覚的な方法で関数を作成することをサポートしています。本記事では、ODCを使用して関数を作成する方法について説明します。
概要
関数はデータベース内で定義されたサブプログラムであり、組み込みSQLステートメントから呼び出すことができます。標準の関数では業務要件を満たせない場合、ODCで新しい関数を作成し、カスタム関数を追加することで、特定の機能計算や各種操作を実現できます。また、カスタム関数により重複コーディングを減らし、プログラムの可読性を向上させることができます。
関数はストアドプロシージャと非常によく似た手続き型のデータベースオブジェクトです。ストアドプロシージャと同様に、SQLステートメントと手続き型ステートメントで構成されるコード断片であり、アプリケーションや他のSQLステートメントから呼び出すことができます。
カスタム関数とストアドプロシージャの違い:
関数は必ず1つの戻り値を持ち、データを処理した後に結果を返すのに適しています。ストアドプロシージャは0個以上の戻り値を持つことができ、一括挿入や一括更新などに適しています。
関数は
SELECTステートメントで直接呼び出すことができますが、ストアドプロシージャの呼び出しにはCALLステートメントを使用する必要があります。

上図のように、関数の作成には以下の6つのステップが含まれます:
関数名を入力します。
関数の戻り値のデータ型を選択します。
パラメータを追加します。
新規関数情報を確定します。
関数情報を編集します。
新規関数の作成を完了します。
このドキュメントでは、ODCで従業員関数 function_emp を作成する例を説明します。関数 function_emp には id INT 型のパラメータが含まれ、id に基づいて従業員名を取得します。
説明
本文中で使用されているデータはすべて例です。実際の状況に応じてデータを置き換えてください。
操作手順
ステップ1:関数名の入力
OceanBase Developer Center (ODC) で接続名をクリックして接続に入った後、左側のナビゲーションペインで 関数 タブをクリックすると関数リストを見ることができます。関数リストの右上隅で、+ 関数を作成をクリックするか、ODC上部のナビゲーションバーで 新規作成 をクリックして必要なオブジェクトを作成します。

ステップ2:関数の戻り値のデータ型の選択
具体的なデータ型については、OceanBaseデータベースのリファレンスガイドに関するドキュメントをご参照ください。
ステップ3:パラメータの追加
パラメータとは関数を呼び出す際に渡す情報であり、パラメータ情報を指定する必要があります:
OceanBase Oracleモード:パラメータの オブジェクト名、モード、タイプ、および デフォルト値 を指定する必要があります。を使用します。
OceanBase MySQLモード:パラメータの 名前、タイプ、および 長さ を指定する必要があります。
関数の追加には、以下の3つの操作が提供されています:
機能説明ポップアップガイド補助メニュー ポップアップガイド補助メニューを使用して、パラメータの追加、削除、上下移動を行えます。 表番号をクリック - 表番号をクリックして行全体を選択すると、補助メニュー(削除、上/下移動)が表示されます。
- 表番号をクリックして選択し、行をドラッグすることで、パラメータの順序を調整できます。
マウス右クリック操作 右クリックして行全体を選択し、行のコピーまたは1行下への移動を行います。 説明
行をコピーした後、任意の行を選択し、ショートカットキーCommand + V / Ctrl + Vを押して貼り付けることができます。
パラメータ で指定する必要がある モード は、パラメータのタイプを指します。
OceanBase MySQLモードではパラメータモードの設定はサポートされていませんが、OceanBase Oracleモードでは、IN (入力)、OUT (出力)、INOUT (入出力) の3種類のパラメータモードをサポートしています。
パラメータタイプIN 入力パラメータ。関数を呼び出す際に、パラメータの値を関数に渡して実行時に使用します。 OUT 出力パラメータ。関数を呼び出す際、関数は出力パラメータ自体の値を無視し、空値を渡します。関数体内で出力パラメータを変更し、その変更結果を出力パラメータが表す実引数に返すことができます。 INOUT 入出力パラメータ。入力パラメータと出力パラメータの機能を兼ね備えています。 説明
OceanBase Oracleモードでは、関数とストアドプロシージャはIN/OUT/INOUTパラメータを含みます。OceanBase MySQLモードではINパラメータのみを含み、ストアドプロシージャはIN/OUT/INOUTパラメータを含みます。
ステップ4:新規関数の確定
OK をクリックし、SQL作成確認ページに進みます。
ステップ5:関数情報の編集

SQL作成確認ページで、関数ステートメントを編集します。
ユーザーはSQL作成確認ページで作成する関数のステートメントを編集できます。構文は以下のとおりです:
CREATE FUNCTION function_name ([var_name var_type[,...]])
RETURNS return_type
delarification_block
BEGIN
function_body
EXCEPTION
exception_handler
END;
パラメータの説明:
パラメータ |
説明 |
|---|---|
| function_name | カスタム関数の名前を指定します。
注意カスタム関数はストアドプロシージャと同じ名前を持つことはできません。 |
| var_name var_type | カスタム関数のパラメータを指定するために使用されます。このパラメータには名前と型のみ指定可能で、キーワードIN、OUT、INOUTは指定できません。 |
| RETURNS return_type | カスタム関数の戻り値のデータ型を宣言するために使用されます。ここで、return_type は戻り値のデータ型を指定するために使用されます。
注意RETURN VALUEステートメント内にSELECTステートメントを含める場合、SELECTステートメントの戻り結果は1行1列の値でなければなりません。 |
| function_body | カスタム関数の本体部分、すなわち関数体です。関数体には必ず RETURN ステートメントを含める必要があります。 関数体が複合構造の場合は、BEGIN...ENDステートメントを使用する必要があります。 |
例:
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 function_name ([function_parameter [,...]])
例:
SELECT function_emp(2);
OceanBase MySQLモード

OceanBase Oracleモード
注意
Oracleモードでは、OUTパラメータを含む場合は、
CALLを使用して関数を呼び出す必要があります。関数リストに黄色いアイコンが表示されている場合、現在エラーまたは警告が発生していることを示します。