ホームページ  >  記事  >  データベース  >  MySQL プロセス制御 while、repeat、loop ループ

MySQL プロセス制御 while、repeat、loop ループ

WBOY
WBOY転載
2022-07-27 17:38:121919ブラウズ

この記事では、mysql に関する関連知識を提供します。主に、MySQL ストアド プロシージャの while、repeat、loop ループのプロセス制御を紹介します。ループ内のコードは、特定の回数だけ実行されます。特定の条件が満たされるまで実行され、ループが終了します。見てみましょう。皆さんの参考になれば幸いです。

MySQL プロセス制御 while、repeat、loop ループ

推奨学習: mysql ビデオ チュートリアル

序文

  • ループは、プログラム 1 回だけ出現するコードですが、連続して複数回実行される可能性があります。
  • ループ内のコードは特定の回数実行されるか、特定の条件が満たされるとループが終了します。

#ループ分類:

    ##while
  • ## repeat
  • loop
  • ループ制御:

leave

と同様

break、ジャンプアウト、現在のループを終了 iterate

continue と同様、継続、このループを終了し、次のループに進みます while ループ

【标签:】while 循环条件 do
循环体;
end while【 标签】;
-- 创建测试表
create table user (
uid int primary_key,
username varchar ( 50 ),
password varchar ( 50 )
);
-- -------存储过程-while
delimiter $$
create procedure proc16_while1(in insertcount int)
begin
declare i int default 1;
label:while i<=insertcount do
insert into user(uid,username,`password`) values(i,concat(&#39;user-&#39;,i),&#39;123456&#39;);
set i=i+1;
end while label;
end $$
delimiter ;
call proc16_while(10);

ストアド プロシージャの構文が修正されました:

delimiter $$ create peocedure ループ名 (パラメータ) begin code end $$ delimiter;

#ループ本体を記述するときは、declare i intdefault デフォルト値

Then dlabel:

while 判定条件 do

## を使用して、ループを定義する最初の変数が必要であることに注意してください。 # ループ本体

end while label; end && は

-- -------存储过程-while + leave
truncate table user;
delimiter $$
create procedure proc16_while2(in insertcount int)
begin
declare i int default 1;
label:while i<=insertcount do
insert into user(uid,username,`password`) values(i,concat(&#39;user-&#39;,i),&#39;123456&#39;);
if i=5 then leave label;
end if;
set i=i+1;
end while label;
end $$
delimiter ;
call proc16_while2(10);
が必要です 内部でループから抜け出す必要がある場合は if 判定を使用しますが、最後には end if が必要です ここでの Leave はループから抜け出すことです。break に相対的です。
-- -------存储过程-while+iterate
truncate table user;
delimiter $$
create procedure proc16_while3(in insertcount int)
begin
declare i int default 1;
label:while i<=insertcount do
set i=i+1;
if i=5 then iterate label;
end if;
insert into user(uid,username,`password`) values(i,concat(&#39;user-&#39;,i),&#39;123456&#39;);
end while label;
end $$
delimiter ;
call proc16_while3(10);

ここでの反復は continue に相対的です。次のコードは、遭遇した場合には実行されません。

repeat ループ

[标签:]repeat
循环体;
until 条件表达式
end repeat [标签];
-- -------存储过程-循环控制-repeat
use mysql7_procedure;
truncate table user;
delimiter $$
create procedure proc18_repeat(in insertCount int)
begin
declare i int default 1;
label:repeat
insert into user(uid, username, password) values(i,concat(&#39;user-&#39;,i),&#39;123456&#39;);
set i = i + 1;
until i > insertCount
end repeat label;
select &#39;循环结束&#39;;
end $$
delimiter ;
call proc18_repeat(100);

これは に対する相対的なもので、ループは何があっても一度実行され、その後内部で判定され、満たされていれば直接飛び出します

looploop

[标签:] loop
循环体;
if 条件表达式 then
leave [标签];
end if;
end loop;
-- -------存储过程-循环控制-loop
truncate table user;

delimiter $$
create procedure proc19_loop(in insertCount int)
begin
declare i int default 1;
label:loop
insert into user(uid, username, password) values(i,concat(&#39;user-&#39;,i),&#39;123456&#39;);
set i = i + 1;
if i > 5
then
leave label;
end if;
end loop label;
select &#39;循环结束&#39;;
end $$
delimiter ;
call proc19_loop(10);

これと繰り返しの違いは、実行後、leave を使用することです。ループから抜け出すためにどのメソッドを使用しても、必要な効果を達成できますが、ビジネス アプリケーションのシナリオでは、while が依然として比較的一般的です。

推奨学習:

mysql ビデオ チュートリアル

以上がMySQL プロセス制御 while、repeat、loop ループの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はjb51.netで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。