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

MySQLのストアドプロシージャを介してループする方法は?


MySQLでストアドプロシージャをループする方法を見てみましょう

mysql> DELIMITER //
mysql> CREATE PROCEDURE do_WhileDemo(LastValue INT)
   -> BEGIN
      -> SET @loop = 0;
      -> REPEAT
         -> SET @loop= @loop+ 1;
         -> select @loop;
         -> UNTIL @loop >LastValue
      -> END REPEAT;
   -> END //
Query OK, 0 rows affected (0.17 sec)
mysql> DELIMITER ;

次に、CALLコマンドを使用してストアドプロシージャを呼び出します。

クエリは次のとおりです

mysql> call do_WhileDemo(10);

以下は出力です

+-------+
| @loop |
+-------+
| 1     |
+-------+
1 row in set (0.00 sec)
+-------+
| @loop |
+-------+
| 2     |
+-------+
1 row in set (0.01 sec)
+-------+
| @loop |
+-------+
| 3     |
+-------+
1 row in set (0.02 sec)
+-------+
| @loop |
+-------+
| 4     |
+-------+
1 row in set (0.03 sec)
+-------+
| @loop |
+-------+
| 5     |
+-------+
1 row in set (0.04 sec)
+-------+
| @loop |
+-------+
| 6     |
+-------+
1 row in set (0.04 sec)
+-------+
| @loop |
+-------+
| 7     |
+-------+
1 row in set (0.05 sec)
+-------+
| @loop |
+-------+
| 8     |
+-------+
1 row in set (0.06 sec)
+-------+
| @loop |
+-------+
| 9     |
+-------+
1 row in set (0.07 sec)
+-------+
| @loop |
+-------+
| 10    |
+-------+
1 row in set (0.08 sec)
+-------+
| @loop |
+-------+
| 11    |
+-------+
1 row in set (0.09 sec)
Query OK, 0 rows affected (0.10 sec)

  1. MySQLストアドプロシージャに条件を正しく実装するにはどうすればよいですか?

    ストアドプロシージャで条件を設定するには、次の構文を使用します-     if yourCondition then    yourStatement1;      else    yourStatement2';       end if ;     end     // ストアドプロシージャで欠落しているセミコロンを修正するために、上記の構文を実装しましょう- mysql> delimiter // mysql>

  2. MySQLストアドプロシージャでDELIMITERを正しく使用するにはどうすればよいですか?

    正しい方法は次のとおりです- DELIMITER // CREATE PROCEDURE yourStoredProcedureName() BEGIN  IF  yourCondition then      yourStatement1 ; else     yourStatement2 ; END IF ; END // DELIMITER ; ここで例を見て、ストアドプロシージャを作成しましょう- mysql> DELIMITER // mysql> CREATE PROCEDURE delimit