MySQL
 Computer >> コンピューター >  >> プログラミング >> MySQL

MySQLストアドプロシージャのパラメータモードとは?IN・OUT・INOUTの違いを解説

パラメータを活用することで、ストアドプロシージャはより実用的で柔軟なものになります。MySQLでは、パラメータのモードとして以下の3種類が用意されています。

INモード(入力パラメータ)

INモードはデフォルトのモードです。ストアドプロシージャ内でINパラメータを定義した場合、呼び出し側のプログラムは引数を渡す必要があります。INパラメータの値は保護されており、たとえストアドプロシージャの内部で値を変更しても、処理終了後には元の値が保持されるという特徴があります。

OUTモード(出力パラメータ)

OUTパラメータの値は、ストアドプロシージャの内部で変更することが可能で、その新しい値は呼び出し元のプログラムへ返されます。ただし、ストアドプロシージャは開始時点でOUTパラメータの初期値にアクセスできない点に注意が必要です。

INOUTモード(入出力パラメータ)

INOUTパラメータは、INとOUTの両方の性質を兼ね備えたモードです。つまり、呼び出し側のプログラムから引数を受け取ることができるだけでなく、ストアドプロシージャ内部でその値を変更したうえで、新しい値を呼び出し元へ返すこともできます。

パラメータ定義の基本構文

ストアドプロシージャにおけるパラメータの定義は、次の構文に従います。

MODE parameter_name parameter_type(parameter_size)

ここでMODEには、パラメータの用途に応じて「IN」「OUT」「INOUT」のいずれかを指定します。

  • parameter_name:パラメータの名前
  • parameter_type:パラメータのデータ型
  • parameter_size:パラメータのサイズ

定義例

実際の定義例は以下のようになります。

CREATE PROCEDURE sample_proc(IN p_id INT, OUT p_total DECIMAL(10,2))
BEGIN
  SELECT SUM(price) INTO p_total FROM orders WHERE user_id = p_id;
END;

この例では、p_idが呼び出し元から値を受け取るINパラメータ、p_totalが計算結果を呼び出し元へ返すOUTパラメータとして機能します。用途に応じて適切なモードを選択することで、ストアドプロシージャの再利用性と可読性を高めることができます。

  1. MySQLストアドプロシージャにおける「@」記号の使い方|ユーザー定義セッション変数の活用例

    MySQLのストアドプロシージャ内で使われる「@」記号は、ユーザー定義のセッション変数(ユーザー変数)を扱うために使用されます。セッション変数に値を格納しておけば、プロシージャの実行後も同じセッション内であればその値を参照できます。この記事では、実際にテーブルを作成し、ストアドプロシージャの中で「@」変数を使ってレコード数を取得する手順を順番に解説します。1. サンプルテーブルの作成まず、学生名を保存するテーブルを作成します。mysql> create table DemoTable ( StudentName varchar(50) ); Query OK, 0 rows af

  2. Java 9のJShellで使える4つのフィードバックモードの違いと切り替え方

    JShellのフィードバックモードとは JShellツールで操作を実行すると、コマンドの成功・エラー、作成された変数の型やその値といったメッセージが表示されます。この表示内容は、「/set feedback」コマンドを使ってカスタマイズできます。このコマンドを実行すると、現在設定されているフィードバックモードと、利用可能な各モードの一覧が確認できます。 jshell> /set feedback | /set feedback normal | | Available feedback modes: | concise | normal | silent | verbose JShell