MySQLストアドプロシージャの戻り値?
ストアドプロシージャから値を返すには、ユーザー定義のセッション固有の変数を使用する必要があります。変数名の前に@記号を追加します。
たとえば、変数validoには@symbolを使用します。同じ構文は次のとおりです。
SELECT @valido;
selectステートメントを使用するときは常に、@anyVariableNameを使用する必要があります。構文は次のとおりです。
SELECT @anyVariableName;
これは、戻り値のストアドプロシージャのデモです。ストアドプロシージャを作成するためのクエリは次のとおりです。
mysql> create procedure ReturnValueFrom_StoredProcedure -> ( -> In num1 int, -> In num2 int, -> out valido int -> ) -> Begin -> IF (num1> 4 and num2 > 5) THEN -> SET valido = (num1+num2); -> ELSE -> SET valido = (num1-num2); -> END IF; -> select @valido; -> end // Query OK, 0 rows affected (0.32 sec) mysql> DELIMITER ;
CALLコマンドを使用してストアドプロシージャを呼び出します。クエリは次のとおりです。
mysql> call ReturnValueFrom_StoredProcedure(10,6,@TotalSum); +---------+ | @valido | +---------+ | NULL | +---------+ 1 row in set (0.00 sec) Query OK, 0 rows affected (0.01 sec)
次に、selectステートメントを使用してストアドプロシージャの結果を確認します。クエリは次のとおりです。
mysql> select @TotalSum;
出力は次のとおりです。
+-----------+ | @TotalSum | +-----------+ | 16 | +-----------+ 1 row in set (0.00 sec)
次に、2つの値の差を求めます。ストアドプロシージャを呼び出します。
mysql> call ReturnValueFrom_StoredProcedure(4,2,@TotalDiff); +---------+ | @valido | +---------+ | NULL | +---------+ 1 row in set (0.00 sec) Query OK, 0 rows affected (0.01 sec)
selectステートメントを使用して、ユーザー定義のセッション固有の変数の結果を確認します。クエリは次のとおりです。
mysql> select @TotalDiff;
出力は次のとおりです。
+------------+ | @TotalDiff | +------------+ | 2 | +------------+ 1 row in set (0.00 sec)
-
MySQLストアドプロシージャのテーブルにデータを挿入しますか?
ストアドプロシージャのテーブルに挿入するための構文は次のとおりです- create procedure yourProcedureName(OptionalParameter) begin insert into yourTableName() values(yourValue1,yourValue2,...N); end 上記の構文を理解するために、最初にテーブルを作成しましょう- mysql> create table DemoTable1928 ( Id int NOT NUL
-
列の値をMySQLストアドプロシージャの変数に格納します
変数を宣言するには、MySQLストアドプロシージャでDECLAREを使用します。まずテーブルを作成しましょう- mysql> create table DemoTable2034 -> ( -> StudentId int NOT NULL AUTO_INCREMENT PRIMARY KEY, -> StudentName varchar(20), -> StudentAge int -> ); Query OK, 0 rows