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

MySQL LOOPステートメントをストアドプロシージャでどのように使用できますか?


MySQLはLOOPを提供します ループラベルを使用する柔軟性が追加された状態で、コードのブロックを繰り返し実行するステートメント。ループを制御できるようにする次の2つのステートメントがあります-

LEAVEステートメント 条件の確認を待たずにループをすぐに終了できます。

反復ステートメント

その下のコード全体をスキップして、新しいイテレーションを開始できます。

LOOPの使用法を示すため ストアドプロシージャを含むステートメント。以下は、2、4、6、8などの偶数の文字列を作成するストアドプロシージャです。-

mysql> Delimiter //
mysql> CREATE PROCEDURE LOOP_loop()
    -> BEGIN
    -> DECLARE A INT;
    -> DECLARE XYZ VARCHAR(255);
    -> SET A = 1;
    -> SET XYZ = '';
    -> loop_label: LOOP
    -> IF A > 10 THEN
    -> LEAVE loop_label;
    -> END IF;
    -> SET A = A + 1;
    -> IF (A mod 2) THEN
    -> ITERATE loop_label;
    -> ELSE
    -> SET XYZ = CONCAT(XYZ,A,',');
    -> END IF;
    -> END LOOP;
    -> SELECT XYZ;
    -> END //
Query OK, 0 rows affected (0.07 sec)

これで、このプロシージャを呼び出すと、以下の結果が表示されます-

mysql> DELIMITER ;
mysql> CALL LOOP_loop ();
+-------------+
| XYZ         |
+-------------+
| 2,4,6,8,10, |
+-------------+
1 row in set (0.04 sec)
Query OK, 0 rows affected (0.04 sec)

上記のクエリでは、Aの値が10より大きい場合、LEAVEステートメントが原因でループが終了しました。 Aの値が奇数の場合、ITERATEステートメントはその下のすべてを無視し、新しい反復を開始します。 Aの値が偶数の場合、ELSEステートメントのブロックは偶数の文字列を作成します。


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

    MySQLでストアドプロシージャをループする方法を見てみましょう mysql> DELIMITER // mysql> CREATE PROCEDURE do_WhileDemo(LastValue INT)    -> BEGIN       -> SET @loop = 0;       -> REPEAT          -> SET @loop= @loop+ 1;        

  2. MySQLでselectステートメントを使用してストアドプロシージャを呼び出す方法は?

    MySQLでは、FROM句でselectfromプロシージャを使用することはできません。 CALLコマンドを使用すると、その後SELECTステートメントを実行できます。 最初にテーブルを作成しましょう: mysql> create table DemoTable2    -> (    -> CustomerId int NOT NULL AUTO_INCREMENT PRIMARY KEY,    -> CustomerName varchar(100),    -> Shippi