MySQLストアドプロシージャのOUTパラメータ:値を出力する方法を解説
MySQLストアドプロシージャで出力(OUT)パラメータを使用する方法
MySQLのストアドプロシージャでは、入力用のINパラメータと、結果を受け取るための出力用のOUTパラメータを定義できます。本記事では、数値の平方根を計算してユーザー変数に結果を返すストアドプロシージャを例に、その作成方法と呼び出し方を解説します。
1. ストアドプロシージャの作成
以下は、第1引数に入力用(IN)の整数、第2引数に出力用(OUT)の浮動小数点数を受け取るストアドプロシージャの例です。このプロシージャは、入力された整数の平方根を計算し、OUTパラメータに格納します。
mysql> delimiter // mysql> create procedure Sp_SQRT(IN Number1 INT, OUT Number2 FLOAT) -> Begin -> set Number2=sqrt(Number1); -> end; -> // Query OK, 0 rows affected (0.24 sec) mysql> delimiter ;
ポイント: プロシージャ本体の中で;が文の区切りとして使われるため、まずdelimiter //でデリミタを変更しています。作成後はdelimiter ;で元に戻すのを忘れないようにしましょう。
2. ストアドプロシージャの呼び出し
作成したストアドプロシージャを呼び出し、OUTパラメータの結果をユーザー変数に受け取ります。構文は以下の通りです。
CALL yourStoredProcedureName(anyIntegerValue,@anyVariableName);
実際に「Sp_SQRT」という名前のストアドプロシージャを作成したので、36を渡して呼び出してみます。
mysql> call Sp_SQRT(36,@MySquareRootNumber); Query OK, 0 rows affected (0.02 sec)
3. 出力結果の確認
SELECT文を使って、変数@MySquareRootNumberに格納された値を確認できます。構文は以下の通りです。
SELECT @anyVariableName;
実際に実行してみましょう。
mysql> select @MySquareRootNumber;
実行結果は以下のようになります。36の平方根である「6」が正しく返されていることがわかります。
+---------------------+ | @MySquareRootNumber | +---------------------+ | 6 | +---------------------+ 1 row in set (0.00 sec)
まとめ
このように、MySQLのストアドプロシージャではINパラメータで値を受け取り、OUTパラメータで処理結果を呼び出し元に返すことができます。呼び出し時に@から始まるユーザー変数を指定することで、複数の結果を一度に取得したり、アプリケーション側で柔軟に結果を扱ったりすることが可能になります。計算処理やデータ集計などをデータベース側に任せたい場合に、ぜひ活用してみてください。
-
MySQLストアドプロシージャで数学演算を実行する方法
MySQLのストアドプロシージャで計算処理を行うMySQLのストアドプロシージャを利用すると、金額×数量のような数学演算をまとめて定義し、必要なときに簡単に呼び出して実行できます。ここでは、引数として受け取った「amount(金額)」と「quantity(数量)」を掛け合わせて合計を求めるプロシージャを作成する手順を紹介します。ストアドプロシージャの作成まず、delimiter を変更してプロシージャ本体を定義します。以下の例では、amount と quantity の2つの INT 型引数を受け取り、その積を「Total」として表示します。mysql> delimiter // mys
-
MySQLストアドプロシージャでテーブルにデータを挿入する方法
MySQLのストアドプロシージャを使ってテーブルにデータを挿入するには、以下のような構文を使用します。create procedure yourProcedureName(OptionalParameter) begin insert into yourTableName() values(yourValue1,yourValue2,...N); endサンプルテーブルの作成まずは、この構文を実際に理解するために、テスト用のテーブルを作成してみましょう。mysql> create table DemoTable1928 ( Id int NOT NULL