ODC は、視覚化されたストアドプロシージャの作成をサポートしています。このトピックでは、ODC を使用してストアドプロシージャを作成する方法について説明します。
概要
ストアドプロシージャとは、1 つ以上の文のコレクションです。データベースに対して一連の複雑な操作を実行する場合、ストアドプロシージャを使用して、これらの複雑な操作をデータベース内の再利用可能なコードブロックにカプセル化できます。これにより、開発者のワークロードを軽減できます。
OceanBase Database では、ストアドプロシージャは特定の機能を実装するための SQL 文のコレクションです。ストアドプロシージャをコンパイルしてデータベースに格納した後、ストアドプロシージャ名と必要なパラメーターを指定して、このストアドプロシージャを呼び出し、SQL 文の実行を高速化できます。
ストアドプロシージャには、パラメーターと戻り値を含めることができます。
ストアドプロシージャと関数の違い
関数の戻り値は特定の結果値ですが、ストアドプロシージャの戻り値は実行が成功したかどうかのみを示します。
SELECT文を使用して関数を呼び出すことができます。CALL文を使用してストアドプロシージャを呼び出すことができます。
ストアドプロシージャの利点
アプリケーションの汎用性と移植性を向上させる:ストアドプロシージャを作成すると、プロシージャの SQL 文を書き直すことなく、プログラムによって繰り返し呼び出すことができます。さらに、ストアドプロシージャはプログラムのソースコードに影響を与えることなく変更できるため、プログラムの移植性が向上します。
SQL の実行を高速化する:操作に大量の SQL 文が含まれる場合、または同じ SQL 文を繰り返し実行する場合、コードをストアドプロシージャにコンパイルし、ストアドプロシージャを実行できます。これは、文を個別に実行するよりも高速です。
サーバーのワークロードを軽減する:データベースオブジェクトに対して操作を実行するために一度に 1 つの SQL 文が呼び出される場合、多数の SQL 文が送信されます。同等のストアドプロシージャの場合、プロシージャを呼び出すコマンドのみが送信されるため、ネットワーク負荷が軽減されます。

前の図に示すように、次の 5 つのステップでストアドプロシージャを作成できます。
次の例では、部門予算の計算のために、proc_total という名前のストアドプロシージャが ODC コンソールで作成されます。ストアドプロシージャには、2 つの INT 型入力パラメーター budget_r と budget_s が含まれており、2 つのパラメーターの合計を計算します。
このトピックで使用されているデータは例です。必要に応じて、実際のデータに置き換えることができます。
手順
ステップ 1:ストアドプロシージャの名前を指定します。
ODC コンソールにログオンし、目的の接続の名前をクリックして、対応する接続管理ページに移動します。左側のナビゲーションウィンドウで ストアドプロシージャ+作成ストアドプロシージャ をクリックすると、ストアドプロシージャのリストが表示されます。ストアドプロシージャを作成するには、ストアドプロシージャリストの右上隅にある をクリックするか、上部のナビゲーションバーで > を選択します。
ストアド プロシージャの作成 ダイアログボックスで、ストアドプロシージャの名前を入力します。

ステップ 2:パラメーターを指定します。
パラメーターは、関数の呼び出し時に関数に渡される情報を指定します。
Oracle モードでは、[名前]、[モード]、[タイプ]、[既定値] の各フィールドを指定します。
MySQL モードでは、名前、モード、種類、および 長さ を指定します。
次の 3 つの方法のいずれかを使用してパラメーターを指定できます。
方法
説明
クイックアクセツールバーを使用する
クイックアクセツールバーでは、パラメーターを追加、削除、上下に移動できます。
行番号をクリックする
行番号をクリックして行を選択し、行の削除または上下への移動を可能にするクイックアクセツールバーを表示できます。
行番号をクリックして行を選択し、行をドラッグして順序を調整できます。
右クリックする
行をコピーするか、1 行下に移動する:ポインターをドラッグして行を選択し、右クリックして、表示されるコンテキストメニューから [コピー] または [下に移動] を選択します。
セルをコピーする:セルを選択し、右クリックして、表示されるコンテキストメニューから [コピー] を選択します。
説明行をコピーした後、行を選択し、ショートカットキー Command + V / Ctrl + V を使用してコピーした行データを貼り付けることができます。
パラメーターのモードを指定する必要があります。
MySQL モードと Oracle モードの両方の OceanBase Database は、IN、OUT、INOUT のパラメーターモードをサポートしています。
CREATE PROCEDURE proc_name ([[IN |OUT |INOUT ] parameter_name parameter_type...])パラメーター
パラメーター
タイプ
IN
入力パラメーターを示します。
ストアドプロシージャが呼び出されると、入力パラメーターがストアドプロシージャに渡され、ストアドプロシージャの実行で使用されます。通常、入力パラメーターは値を渡すためだけに使用され、ストアドプロシージャの呼び出しでは変更または返されません。
OUT
出力パラメーターを示します。
ストアドプロシージャが呼び出されると、出力パラメーターの値は無視され、空の値がストアドプロシージャに渡されます。出力パラメーターの値は、ストアドプロシージャの実行中に変更されます。実行が完了すると、変更された値が出力パラメーターに割り当てられます。通常、出力パラメーターはストアドプロシージャの実行結果を取得するために使用されます。出力パラメーターを使用して、ストアドプロシージャの呼び出しで値を変更および返すことができます。
INOUT
入力出力パラメーターを示します。
入力出力パラメーターは、入力パラメーターと出力パラメーターの両方です。
パラメーター設定
プロパティ
必須
デフォルト
モード
名前
はい
空
Oracle/MySQL
モード
はい
IN
Oracle/MySQL
タイプ
はい
VARCHAR
Oracle/MySQL
長さ
はい
45
MySQL
デフォルト値
いいえ
空
Oracle
ステップ 3:ストアドプロシージャのパラメーターを確認します。
[OK] をクリックして、ストアド プロシージャの作成ページに移動します。
ステップ 4:ストアドプロシージャを編集します。

ストアドプロシージャの作成ページで文を編集します。
さらに、編集ページのツールバーには次のボタンがあります。
ボタン | 説明 |
[フォーマット] | このボタンをクリックすると、選択した SQL 文または現在の SQL ウィンドウのすべての SQL 文に、インデント、改行、キーワードのハイライトなどのフォーマットが適用されます。 |
[検索と置換] | このボタンをクリックし、検索フィールドにテキストを入力して特定のコンテンツを検索し、置換フィールドにテキストを入力して見つかったコンテンツを置換します。 |
[元に戻す] | このボタンをクリックすると、最後の操作が元に戻されます。 |
[やり直し] | このボタンをクリックすると、[元に戻す] 操作が逆再生されます。 |
[大文字と小文字の区別] | システムは、すべて大文字すべて小文字最初の文字を大文字にする、、 の 3 つの capitalization オプションをサポートしています。対応するオプションをクリックして、スクリプトで選択した文を目的の大文字小文字形式に変換します。 |
[インデント] | 選択した文にインデントを追加したり、インデントを削除したりできます。 |
[コメント] | コメントを追加するコメントを削除 をクリックして、選択した文をコメントに変換するか、 をクリックして、コメントを SQL 文に変換できます。 |
[IN 値の変換] | A B などの形式を ('A','B') 形式に変換できます。 |
作成したストアドプロシージャの SQL 文は、ストアドプロシージャの作成ページで編集できます。構文:
CREATE PROCEDURE proc_name (
[proc_parameter[,...]])
IS
BEGIN
proc_body:
有効な SQL ルーチン文
END [end_label]
パラメーター
パラメーター | 説明 |
proc_name | ストアドプロシージャの名前。デフォルトでは、ストアドプロシージャは現在のデータベースに作成されます。特定のデータベースにストアドプロシージャを作成するには、db_name.sp_name の形式でデータベース名をプレフィックスとしてストアドプロシージャの名前に追加します。 説明 ストアドプロシージャの名前は、ビルトイン MySQL 関数の名前と異なる必要があります。そうでないと、エラーが発生する可能性があります。 |
[proc_parameter[,…] ] | ストアドプロシージャパラメーターのリスト。パラメーターは `[IN |
proc_body | ストアドプロシージャの本文。ストアドプロシージャの呼び出し時に実行される SQL 文が含まれています。 本文は BEGIN で始まり、END で終わります。本文に SQL 文が 1 つだけ含まれている場合は、BEGIN フラグと END フラグを省略できます。 |
ステップ 5:ストアドプロシージャの作成を完了します。
右上隅の [作成] をクリックして、ストアドプロシージャを作成します。ストアドプロシージャが作成された後、ビルトイン関数を呼び出す方法と同様に、CALL 文を使用して呼び出すことができます。

ストアドプロシージャを管理するには、左側のナビゲーションウィンドウでストアドプロシージャ名を右クリックし、コンテキストメニューから必要な操作を選択します。コンテキストメニューには、表示作成編集実行ダウンロード削除更新、、、、、、 のオプションがあります。
詳細については、「ストアドプロシージャの管理」をご参照ください。
構文:
CALL proc_name ([proc_parameter [,...]]);
例:
CALL proc_total (30000, 20000);
