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

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)

  1. MySQLストアドプロシージャのテーブルにデータを挿入しますか?

    ストアドプロシージャのテーブルに挿入するための構文は次のとおりです- create procedure yourProcedureName(OptionalParameter)    begin    insert into yourTableName() values(yourValue1,yourValue2,...N); end 上記の構文を理解するために、最初にテーブルを作成しましょう- mysql> create table DemoTable1928    (    Id int NOT NUL

  2. 列の値をMySQLストアドプロシージャの変数に格納します

    変数を宣言するには、MySQLストアドプロシージャでDECLAREを使用します。まずテーブルを作成しましょう- mysql> create table DemoTable2034    -> (    -> StudentId int NOT NULL AUTO_INCREMENT PRIMARY KEY,    -> StudentName varchar(20),    -> StudentAge int    -> ); Query OK, 0 rows