MySQLストアドプロシージャでDECLAREキーワードを使って変数を作成する方法
MySQLのストアドプロシージャ内で変数を定義するには、DECLAREキーワードを使用します。基本的な構文は以下のとおりです。
DECLARE 変数名 int DEFAULT 初期値;
この構文では、変数名の後にデータ型を指定し、必要に応じてDEFAULT句で初期値を設定できます。DEFAULTを省略した場合、変数の初期値はNULLになります。
ストアドプロシージャでの変数作成の実例
それでは、実際に上記の構文を使って、ストアドプロシージャ内に変数を作成してみましょう。
mysql> DELIMITER // mysql> CREATE PROCEDURE variable_Demo() -> BEGIN -> DECLARE lastInsertedId int DEFAULT -1; -> select lastInsertedId; -> set @providedLastId=10001; -> select @providedLastId; -> END -> // Query OK, 0 rows affected (0.32 sec) mysql> DELIMITER ;
このプロシージャでは、DECLAREによってローカル変数lastInsertedIdを初期値-1で宣言しています。一方、@providedLastIdのように先頭に「@」を付けたものはセッション(ユーザー定義)変数であり、プロシージャ外でも参照可能な点が異なります。
ストアドプロシージャの呼び出し方法
作成したストアドプロシージャは、CALLコマンドで呼び出すことができます。
mysql> call variable_Demo();
実行結果
上記のコマンドを実行すると、次のような出力が得られます。
+----------------+ | lastInsertedId | +----------------+ | -1 | +----------------+ 1 row in set (0.00 sec) +-----------------+ | @providedLastId | +-----------------+ | 10001 | +-----------------+ 1 row in set (0.02 sec) Query OK, 0 rows affected (0.04 sec)
最初のSELECT文では、DEFAULTで設定した初期値-1が表示され、次のSELECT文では代入した値10001が表示されていることが確認できます。
DECLARE使用時の注意点
DECLAREは必ずBEGIN ... ENDブロック内の先頭付近に記述する必要があります。他の処理文より後に記述するとエラーになるため、変数宣言はブロックの冒頭にまとめて書くのが一般的です。
-
MySQL Workbenchでストアドプロシージャを作成・実行する方法
MySQL Workbenchでストアドプロシージャを作成する手順 まずは、ストアドプロシージャを作成してみましょう。以下は、MySQL Workbenchを使用してストアドプロシージャを作成するためのクエリ例です。 use business; DELIMITER // DROP PROCEDURE IF EXISTS SP_GETMESSAGE; CREATE PROCEDURE SP_GETMESSAGE() BEGIN DECLARE MESSAGE VARCHAR(100); SET MESSAGE="HELLO"; SELECT CONCAT(MESSAGE, ,
-
MySQLストアドプロシージャでSHOW CREATE TABLEを実行する方法
MySQLストアドプロシージャでSHOW CREATE TABLEを実行する方法 ストアドプロシージャの中でSHOW CREATE TABLEを実行したい場合は、動的SQL(プリペアドステートメント)を利用します。SHOW系のコマンドはプロシージャ内に直接記述できないため、SQL文を文字列として組み立てて実行するのがポイントです。 まずはサンプル用のテーブルを作成しましょう。 mysql> create table DemoTable2011 -> ( -> StudentId int NOT NULL AUTO_INCREMENT, -> St