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

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ブロック内の先頭付近に記述する必要があります。他の処理文より後に記述するとエラーになるため、変数宣言はブロックの冒頭にまとめて書くのが一般的です。

  1. 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, ,

  2. 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