mysql フロー制御ステートメントには何が含まれますか?

青灯夜游
リリース: 2020-12-22 17:19:15
オリジナル
5969 人が閲覧しました

mysql のフロー制御ステートメントには、IF ステートメント、CASE ステートメント、LOOP ステートメント、WHILE ステートメント、REPEAT ステートメント、LEAVE ステートメント、および ITERATE ステートメントが含まれており、これらはすべてプログラムのフローを制御できます。

mysql フロー制御ステートメントには何が含まれますか?

#フロー制御ステートメントをストアド プロシージャやカスタム関数で使用して、プログラムのフローを制御できます。 MySQL のフロー制御ステートメントには、プロセス制御を実行できる IF ステートメント、CASE ステートメント、LOOP ステートメント、WHILE ステートメント、REPEAT ステートメント、LEAVE ステートメント、および ITERATE ステートメントが含まれます。 (推奨チュートリアル: mysql ビデオチュートリアル )

1. IF ステートメント

IF ステートメントは条件判断に使用されます。 . さまざまな条件に基づいてさまざまな操作を実行します。この文を実行すると、IF以降の条件が真かどうかを判定してからTHEN以降を実行し、偽の場合は真となるまでIF文を判定し続けます。 ELSE ステートメントの実行後の内容。 IF文の表現形式は以下のとおりです。

IF condition THEN
	...
ELSE condition THEN
	...
ELSE
	...
END IF
ログイン後にコピー

例: IF文は条件判定を行う場合に使用します。

-- 创建存储过程
CREATE PROCEDURE example_if (IN x INT)
BEGIN
	IF x = 1 THEN
		SELECT 1;
	ELSEIF x = 2 THEN 
		SELECT 2;
	ELSE
		SELECT 3;
	END IF;
END;

-- 调用存储过程
CALL example_if(2);
ログイン後にコピー

注: MySQL の IF() 関数は、ここでの IF ステートメントとは異なります。

2. CASE ステートメント

CASE ステートメントは複数分岐のステートメント構造であり、このステートメントは最初に VALUE を検索します。 WHEN と CASE の後の VALUE が値と等しい場合は分岐の内容が実行され、そうでない場合は ELSE の後の内容が実行されます。 CASE ステートメントの表現形式は次のとおりです。

CASE value
	WHEN value THEN ...
	WHEN value THEN ...
	ELSE ...
END CASE
ログイン後にコピー

CASE ステートメントの別の文法表現形式は次のとおりです。

CASE
	WHEN value THEN ...
	WHEN value THEN ...
	ELSE ...
END CASE
ログイン後にコピー

例: CASE ステートメントを使用して、条件付きで判断する。

-- 创建存储过程
CREATE PROCEDURE example_case(IN x INT)
BEGIN
	CASE x
		WHEN 1 THEN SELECT 1;
		WHEN 2 THEN SELECT 2;
		ELSE SELECT 3;
	END CASE;
END;

-- 调用存储过程
CALL example_case(5);
ログイン後にコピー

3. WHILE ループ ステートメント

WHILE ループ ステートメントを実行すると、まず条件条件が true であるかどうかを判断し、true である場合は、場合はループ本体を実行し、それ以外の場合はループを終了します。構文は次のように表されます。

WHILE condition DO
...
END WHILE;
ログイン後にコピー

例: WHILE ループ ステートメントを使用して、最初の 100 の合計を求めます。

-- 创建存储过程
CREATE PROCEDURE example_while(OUT sum INT)
BEGIN
	DECLARE i INT DEFAULT 1;
	DECLARE s INT DEFAULT 0;

	WHILE i <= 100 DO
		SET s = s+i;
		SET i = i+1;
	END WHILE;

	SET sum = s;
END;

-- 调用存储过程
CALL example_while(@sum);
SELECT @sum;
ログイン後にコピー

4. LOOP ループ ステートメント

LOOP ループにはループ条件が組み込まれていませんが、LEAVE を使用してループを終了できます。声明。 LOOP ステートメントの式は次のとおりです:

LOOP
	...
END LOOP
ログイン後にコピー

LOOP ステートメントを使用すると、特定のステートメントまたはステートメント グループを繰り返し実行して、単純なループ構造を実装できます。ループ内のステートメントは、ループが終了するまで繰り返されます。 . ループを終了する場合は、LEAVE ステートメントが使用されます。

LEAVE ステートメントは、BEGIN...END またはループと一緒に使用されることが多く、その式は次のとおりです。

LEAVE label
ログイン後にコピー

label はステートメント内でマークされた名前であり、この名前はカスタマイズされます。 。

例: LOOP ループ ステートメントを使用して、最初の 100 の合計を求めます。

-- 创建存储过程
CREATE PROCEDURE example_loop(OUT sum INT)
BEGIN
	DECLARE i INT DEFAULT 1;
	DECLARE s INT DEFAULT 0;
	
	loop_label:LOOP
		SET s = s+i;
		SET i = i+1;
	
		IF i>100 THEN
			-- 退出LOOP循环
			LEAVE loop_label;  
		END IF;
	END LOOP;

	SET sum = s;
END;

-- 调用存储过程
CALL example_loop(@sum);
SELECT @sum;
ログイン後にコピー

5. REPEAT ループ ステートメント

REPEAT ループ ステートメントは、まずループ本体を 1 回実行し、次に条件条件が true であるかどうかを判断します。 、ループを終了します。それ以外の場合はループが継続します。 REPEAT ステートメントの表現は次のとおりです。

REPEAT
	...
	UNTIL condition
END REPEAT
ログイン後にコピー

例: REPEAT ループ ステートメントを使用して、最初の 100 の合計を求めます。

-- 创建存储过程
CREATE PROCEDURE example_repeat(OUT sum INT)
BEGIN
	DECLARE i INT DEFAULT 1;
	DECLARE s INT DEFAULT 0;

	REPEAT
		SET s = s+i;
		SET i = i+1;
		
		UNTIL i > 100
	END REPEAT;
	
	SET sum = s;
END;

-- 调用存储过程
CALL example_repeat(@sum);
SELECT @sum;
ログイン後にコピー

6. ITERATE ステートメント

ITERATE ステートメントは、LOOP、REPEAT、および WHILE ステートメント内に使用でき、「再度ループする」ことを意味します。ステートメントの形式は次のとおりです:

ITERATE label
ログイン後にコピー

このステートメントの形式は LEAVE の形式に似ていますが、異なる点は、LEAVE ステートメントはループを終了し、ITERATE ステートメントはループを再開することです。

例: 10 以内の奇数の値の合計を求めます。

-- 创建存储过程
CREATE PROCEDURE example_iterate(OUT sum INT)
BEGIN
	DECLARE i INT DEFAULT 0;
	DECLARE s INT DEFAULT 0;
	
	loop_label:LOOP

		SET i = i+1;		

		IF i > 10 THEN
			-- 退出整个循环
			LEAVE loop_label;  
		END IF;

		IF (i mod 2) THEN
			SET s = s+i;
		ELSE
			-- 退出本次循环,继续下一个循环
			ITERATE  loop_label;
		END IF;

	END LOOP;

	SET sum = s;
END;

-- 调用存储过程
CALL example_iterate(@sum);
SELECT @sum
ログイン後にコピー

プログラミング関連の知識については、プログラミング学習 Web サイト をご覧ください。 !

以上がmysql フロー制御ステートメントには何が含まれますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート