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

上図のように、関数の作成には以下の6つのステップが含まれます:
関数名を入力します。
関数の戻り値のデータ型を選択します。
パラメータを追加します。
新規関数の情報を確定します。
関数情報を編集します。
新規関数の作成を完了します。
本記事では、SQLウィンドウで従業員関数 (function_emp) を作成する例を説明します。この関数 function_emp には id INT 型のパラメータが含まれており、id に基づいて従業員名を取得します。
説明
本文中で使用されているデータはすべて例です。実際の状況に応じてデータを置き換えてください。
前提条件
現在のテナントのデータベースアカウントとパスワードを使用してSQLコンソールにログインできること。
手順
ステップ1:関数名を入力する
SQLコンソールにログインしSQLウィンドウに入ったら、左側のデータベースリストで 関数 タグをクリックすると関数リストが表示されます。関数リストの右上隅にある + をクリックして、必要なオブジェクトを作成します。

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

Oracleモード
注意
Oracleモードでは、OUTパラメータを含む場合は
CALL方法で呼び出す必要があります。関数リストに黄色いアイコンが表示されている場合は、現在有誤りまたは警告があることを示しています。
左側のナビゲーションバーで、関数リスト内の関数名を右クリックすると、ポップアップ表示される管理操作リスト(表示、編集、実行、ダウンロード、切り落とす および 更新 を含む)から、対象オブジェクトをすばやく管理および操作できます。関数の機能については、SQLコンソールの機能キー一覧を参照してください。
操作キー |
説明 |
|---|---|
| 表示 | 機能管理 ページに移動し、現在の関数の基本情報、パラメータ、コードなどをすべて確認します。 |
| 編集 | 機能管理 ページには、現在の関数を定義するステートメントが表示されます。このウィンドウでその関数を編集し続けることができます。
説明OceanBaseのMySQLモードは編集機能をサポートしていません。 |
| 実行 | 現在の関数を実行します。 |
| エクスポート | オブジェクトのエクスポート。デフォルトでは現在のオブジェクトをエクスポートしますが、複数のオブジェクトを同時にエクスポートすることもサポートしています。詳細については、本マニュアルの 単一テーブルのエクスポートとインポート を参照してください。 |
| ダウンロード | 関数オブジェクトのSQLファイルをダウンロードします。 |
| 切り落とす | 現在の関数を削除します。 |
| 更新 | 現在の関数オブジェクトに対して管理操作を行った後、構造ツリーを更新して最新の情報を表示します。 |