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

ApsaraDB for OceanBase:ストアドプロシージャの作成

最終更新日:Jan 21, 2025

ODC は、視覚化されたストアドプロシージャの作成をサポートしています。このトピックでは、ODC を使用してストアドプロシージャを作成する方法について説明します。

概要

ストアドプロシージャとは、1 つ以上の文のコレクションです。データベースに対して一連の複雑な操作を実行する場合、ストアドプロシージャを使用して、これらの複雑な操作をデータベース内の再利用可能なコードブロックにカプセル化できます。これにより、開発者のワークロードを軽減できます。

OceanBase Database では、ストアドプロシージャは特定の機能を実装するための SQL 文のコレクションです。ストアドプロシージャをコンパイルしてデータベースに格納した後、ストアドプロシージャ名と必要なパラメーターを指定して、このストアドプロシージャを呼び出し、SQL 文の実行を高速化できます。

ストアドプロシージャには、パラメーターと戻り値を含めることができます。

ストアドプロシージャと関数の違い

  • 関数の戻り値は特定の結果値ですが、ストアドプロシージャの戻り値は実行が成功したかどうかのみを示します。

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

ストアドプロシージャの利点

  • アプリケーションの汎用性と移植性を向上させる:ストアドプロシージャを作成すると、プロシージャの SQL 文を書き直すことなく、プログラムによって繰り返し呼び出すことができます。さらに、ストアドプロシージャはプログラムのソースコードに影響を与えることなく変更できるため、プログラムの移植性が向上します。

  • SQL の実行を高速化する:操作に大量の SQL 文が含まれる場合、または同じ SQL 文を繰り返し実行する場合、コードをストアドプロシージャにコンパイルし、ストアドプロシージャを実行できます。これは、文を個別に実行するよりも高速です。

  • サーバーのワークロードを軽減する:データベースオブジェクトに対して操作を実行するために一度に 1 つの SQL 文が呼び出される場合、多数の SQL 文が送信されます。同等のストアドプロシージャの場合、プロシージャを呼び出すコマンドのみが送信されるため、ネットワーク負荷が軽減されます。

Overview

前の図に示すように、次の 5 つのステップでストアドプロシージャを作成できます。

  1. ストアドプロシージャの名前を指定する

  2. パラメーターを指定する

  3. ストアドプロシージャのパラメーターを確認する

  4. ストアドプロシージャを編集する

  5. ストアドプロシージャの作成を完了する

次の例では、部門予算の計算のために、proc_total という名前のストアドプロシージャが ODC コンソールで作成されます。ストアドプロシージャには、2 つの INT 型入力パラメーター budget_r と budget_s が含まれており、2 つのパラメーターの合計を計算します。

説明

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

手順

ステップ 1:ストアドプロシージャの名前を指定します。

ODC コンソールにログオンし、目的の接続の名前をクリックして、対応する接続管理ページに移動します。左側のナビゲーションウィンドウで ストアドプロシージャ+作成ストアドプロシージャ をクリックすると、ストアドプロシージャのリストが表示されます。ストアドプロシージャを作成するには、ストアドプロシージャリストの右上隅にある をクリックするか、上部のナビゲーションバーで > を選択します。

ストアド プロシージャの作成 ダイアログボックスで、ストアドプロシージャの名前を入力します。

1

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

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

    • Oracle モードでは、[名前][モード][タイプ][既定値] の各フィールドを指定します。

    • MySQL モードでは、名前モード種類、および 長さ を指定します。

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

    方法

    説明

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

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

    行番号をクリックする

    • 行番号をクリックして行を選択し、行の削除または上下への移動を可能にするクイックアクセツールバーを表示できます。

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

    右クリックする

    • 行をコピーするか、1 行下に移動する:ポインターをドラッグして行を選択し、右クリックして、表示されるコンテキストメニューから [コピー] または [下に移動] を選択します。

    • セルをコピーする:セルを選択し、右クリックして、表示されるコンテキストメニューから [コピー] を選択します。

    説明

    行をコピーした後、行を選択し、ショートカットキー Command + V / Ctrl + V を使用してコピーした行データを貼り付けることができます。

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

    MySQL モードと Oracle モードの両方の OceanBase Database は、INOUTINOUT のパラメーターモードをサポートしています。

    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:ストアドプロシージャを編集します。

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 文を使用して呼び出すことができます。

5.1

説明

ストアドプロシージャを管理するには、左側のナビゲーションウィンドウでストアドプロシージャ名を右クリックし、コンテキストメニューから必要な操作を選択します。コンテキストメニューには、表示作成編集実行ダウンロード削除更新、、、、、、 のオプションがあります。

詳細については、「ストアドプロシージャの管理」をご参照ください。

構文:

CALL proc_name ([proc_parameter [,...]]);

例:

CALL proc_total (30000, 20000);

5.2