MySQL LOOPステートメントをストアドプロシージャでどのように使用できますか?
MySQLはLOOPを提供します ループラベルを使用する柔軟性が追加された状態で、コードのブロックを繰り返し実行するステートメント。ループを制御できるようにする次の2つのステートメントがあります-
その下のコード全体をスキップして、新しいイテレーションを開始できます。
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ステートメントのブロックは偶数の文字列を作成します。
-
MySQLのストアドプロシージャを介してループする方法は?
MySQLでストアドプロシージャをループする方法を見てみましょう mysql> DELIMITER // mysql> CREATE PROCEDURE do_WhileDemo(LastValue INT) -> BEGIN -> SET @loop = 0; -> REPEAT -> SET @loop= @loop+ 1;
-
MySQLでselectステートメントを使用してストアドプロシージャを呼び出す方法は?
MySQLでは、FROM句でselectfromプロシージャを使用することはできません。 CALLコマンドを使用すると、その後SELECTステートメントを実行できます。 最初にテーブルを作成しましょう: mysql> create table DemoTable2 -> ( -> CustomerId int NOT NULL AUTO_INCREMENT PRIMARY KEY, -> CustomerName varchar(100), -> Shippi