MySQLの高度道路(4)フロー制御

ケース構造
#は、受信結果として、クラスを表示するために、入ってくる結果に基づいてストアドプロシージャの作成:特に、ディスプレイDは、表示A、80~90、ディスプレイB、60-80、ディスプレイC、90-100の
手順をCREATE test_case(INはINTスコア)
BEGIN
CASEを
WHENスコア> = 90スコア<= 100 THEN SELECT 'A';
WHENスコア> = 80 THEN SELECT 'B';
WHENスコア> = 60 THEN SELECT 'C';
ELSE SELECT「D 「
END CASE;
ENDドル
CALLのtest_case(95)$を

90-100、表示A、80~90、ディスプレイB、60-80、ディスプレイC、そうでない場合、ディスプレイD:#例えば着信結果としてクラスを表示するために、入ってくる結果に基づいて、ストアドプロシージャ、作成
CREATE PROCEDUREのTEST_ケースを(スコアINT)に
白BEGIN
CASEを
WHENスコア> = 90 AND <= 100 THEN SELECT 'A'スコア;
WHENスコア> = 80 THEN SELECT 'B';
スコア> = 60 THEN SELECT 'C';
ELSE SELECT「D 「;
END CASE;
ENDドル
CATTのtest_caseを(95)$

第二に、ループ構造の
分類:
しばらく、ループ、REPEATの
ループ制御:
、継続して同様の反復継続し、このサイクルの終わり、次に進み
サイクルの終わりが現在位置して、飛び出す、同様のブレークを残す
1.whileの
構文:
[ラベル:]をループ条件がながら
行う
ループを、
エンド[ラベル]ながら、
2.loop
構文:
[タグ:]ループ
ループ
エンドループ[ラベル]は、
単純な無限ループをシミュレートするために使用することができます

  1. 繰り返し
    構文:
    [タグ:]リピート
    ループと、
    ループ終了条件になるまで
    エンドリピート[ラベル]
    #追加されていないループ制御文の
    ケース:一括挿入は、複数のレコードの数に応じて管理テーブルに挿入

(insertCount INT IN)PROCEDURE Pro_whilelをCREATE
BEGIN
私はDEFAULT 1をINT DECLAREを。
私は<= insertCountんが
、管理者(ユーザー名、「パスワード')VALUES(CONCAT('ローズ」、I)、 '666')。INSERT INTO
SET I = I + 1;
END WHILE;
END $の
CALLのpro_whilel(100)$

#2は、休暇文を加えた
数が> 20が停止した場合、管理テーブルへの放送の数に応じて、複数のレコードを一括挿入:トンケースを
CREATE PROCEDUREのtest_whilel(IN insertCount INT)を
BEGIN
。; DECLARE I INT DEFAULTを1
私は<WHILEを: = insertCount DO
INSERTをINTOのadnin(ユーザ名、 'パスワード')VALUES(CONCAT( 'xiaohua'、I)、 '0000');
IF I> = 20 THEN LEAVE Aであり;
END IFI
。私は=私は+ SET 1;
END WHILE A ;
ENDドル
CALLのtest_while1(100)$を

#3は、反復文の追加
のみ偶数次を挿入し、一括挿入、複数のレコードの数に応じて、管理テーブルに挿入します。#ケース

(insertCount INT IN)PROCEDUREのtest_while1 CREATE
BEGIN
私はDEFAULT 0をINT DECLAREを。
A:私は<= insertcountないが
セットI = I + 1。
MOD(iは、2)1 = 0 THEN ITERATE IF。
END IF;
adnin(ユーザ名、パスワード)VALUES(CONCAT( 'xiaohua'、I)、* 0000' )。INSERT INTO。
END WHILE;
END $の
CALLテストwhile1(100)$

既知テーブルstringcontent
前記フィールド:
以来ID成長
コンテンツVARCHAR(20)
テーブルの指定された数を挿入するため、ランダムな文字列

DROP TABLE IFはstringcontentをEXISTS。
表stringcontent CREATE(
ID INT PRIMARY KEY AUTO増分を、
コンテンツVARCHAR(20)
)。

$デリミタは
CREATE PROCEDUREをテストrandstrの INSERT(IN insertCount INT)は、
BEGIN
DECLAREをI INT 12は、デフォルトでは、ループ変数iを定義している挿入の数が表す
STR VARCHAR(26である)を宣言DEFAULT 'abedefghijklmnopqrstuvwxyz';
。INTは、デフォルトのstartIndex DECLARE 1;#開始インデックスを表し
DECLAREをLEN INT DEFAULT 1;#はクリッピング文字の長さを表し
、Iは<WHILE = DO insertCount
SETがlen = FLOOR(RAND() 。(-20 のstartIndex + 1)+ +1)を、整数ランダム表す傍受長を生成し、1- (のstartIndex + 26- 1)
開始プライムプライマー1-26表す、整数の乱数を生成するステップと、SETのstartIndexは、(RAND()* + 26である1)床=
INSERT INTO StringContent(コンテンツ)VALUES(SUBSTR(STR、のstartIndex、LENを));
SETは= I + 1を;シェンループ変数が更新
END WHILEと、
END $を

おすすめ

転載: blog.51cto.com/14509987/2434182