mysql瀛樺偍杩囩▼涓殑3绉嶅惊鐜?
杞嚜锛?a target=”_blank” href=”http://blog.sina.com.cn/s/blog_4f925fc30100mw2l.html” title=”鐐瑰嚮鏌ョ湅鍘熸枃”>http://blog.sina.com.cn/s/blog_4f925fc30100mw2l.html
聽
聽 聽 鍦∕ySQL瀛樺偍杩囩▼鐨勮鍙ヤ腑鏈変笁涓爣鍑嗙殑寰幆鏂瑰紡锛歐HILE寰幆锛孡OOP寰幆浠ュ強REPEAT寰幆銆傝繕鏈変竴绉嶉潪鏍囧噯鐨勫惊鐜柟寮忥細GOTO锛屼笉杩囪繖绉嶅惊鐜柟寮忔渶濂藉埆鐢紝寰堝鏄撳紩璧风▼搴忕殑娣蜂贡锛屽湪杩欓噷灏变笉閿欏叿浣撲粙缁嶄簡銆?/p>
杩欏嚑涓惊鐜鍙ョ殑鏍煎紡濡備笅锛?br>WHILE鈥︹€O鈥︹€ND WHILE
REPEAT鈥︹€NTIL END REPEAT
LOOP鈥︹€ND LOOP
GOTO銆?/p>
聽 |
聽
聽聽聽聽涓嬮潰棣栧厛浣跨敤绗竴绉嶅惊鐜紪鍐欎竴涓緥瀛愩€?br>mysql> create procedure pro10()
聽聽聽聽-> begin
聽聽聽聽-> declare i int;
聽聽聽聽-> set i=0;
聽聽聽聽-> while i<5 do
聽聽聽聽->聽聽聽聽聽insert into t1(filed) values(i);
聽聽聽聽->聽聽聽聽聽set i=i+1;
聽聽聽聽-> end while;
聽聽聽聽-> end;//
Query OK, 0 rows affected (0.00 sec)
聽聽聽聽鍦ㄨ繖涓緥瀛愪腑锛孖NSERT鍜孲ET璇彞鍦╓HILE鍜孍ND WHILE涔嬮棿锛屽綋鍙橀噺i澶т簬绛変簬5鐨勬椂鍊欏氨閫€鍑哄惊鐜€備娇鐢╯et i=0锛涜鍙ユ槸涓轰簡闃叉涓€涓父瑙佺殑閿欒锛屽鏋滄病鏈夊垵濮嬪寲锛宨榛樿鍙橀噺鍊间负NULL锛岃€孨ULL鍜屼换浣曞€兼搷浣滅殑缁撴灉閮芥槸NULL銆?br>聽聽聽聽鎵ц涓€涓嬭繖涓瓨鍌ㄨ繃绋嬪苟浜х湅涓€涓嬫墽琛岀粨鏋滐細
mysql> delete from t1//
Query OK, 0 rows affected (0.00 sec)
mysql> call pro10()//
Query OK, 1 row affected (0.00 sec)
mysql> select * from t1//
+鈥斺€?+
| filed |
+鈥斺€?+
|聽聽聽聽聽0 |
|聽聽聽聽聽1 |
|聽聽聽聽聽2 |
|聽聽聽聽聽3 |
|聽聽聽聽聽4 |
+鈥斺€?+
5 rows in set (0.00 sec)
聽聽聽聽浠ヤ笂灏辨槸鎵ц缁撴灉锛屾湁5琛屾暟鎹彃鍏ュ埌鏁版嵁搴撲腑锛岃瘉鏄庡瓨鍌ㄨ繃绋嬬紪鍐欐纭棤璇痎_^銆?/p>
聽聽聽聽鍐嶆潵鐪嬩竴涓嬬浜屼釜寰幆鎺у埗鎸囦护 REPEAT鈥︹€ND REPEAT銆備娇鐢≧EPEAT寰幆鎺у埗璇彞缂栧啓涓嬮潰杩欎釜瀛樺偍杩囩▼锛?br>mysql> create procedure pro11()
聽聽聽聽-> begin
聽聽聽聽-> declare i int default 0;
聽聽聽聽-> repeat
聽聽聽聽->聽聽聽聽聽insert into t1(filed) values(i);
聽聽聽聽->聽聽聽聽聽set i=i+1;
聽聽聽聽->聽聽聽聽聽until i>=5
聽聽聽聽-> end repeat;
聽聽聽聽-> end;//
Query OK, 0 rows affected (0.00 sec)
聽聽聽聽杩欎釜REPEAT寰幆鐨勫姛鑳藉拰鍓嶉潰WHILE寰幆涓€鏍凤紝鍖哄埆鍦ㄤ簬瀹冪殑鎵ц鍚庢鏌ユ槸鍚︽弧瓒冲惊鐜潯浠讹紙until i>=5锛夛紝鑰學HILE鍒欐槸鎵ц鍓嶆鏌ワ紙while i<5 do锛夈€?br>聽聽聽聽涓嶈繃瑕佹敞鎰弖ntil i>=5鍚庨潰涓嶈鍔犲垎鍙凤紝濡傛灉鍔犲垎鍙凤紝灏辨槸鎻愮ず璇硶閿欒銆?br>聽聽聽聽缂栧啓瀹屾垚鍚庯紝璋冪敤涓€涓嬭繖涓瓨鍌ㄨ繃绋嬶紝骞舵煡鐪嬬粨鏋滐細
mysql> delete from t1//
Query OK, 5 rows affected (0.00 sec)
mysql> call pro11()//
Query OK, 1 row affected (0.00 sec) #铏界劧鍦ㄨ繖閲屾樉绀哄彧鏈変竴琛屾暟鎹彈鍒板奖鍝嶏紝浣嗘槸涓嬮潰閫夋嫨鏁版嵁鐨勮瘽锛岃繕鏄彃鍏ヤ簡5琛屾暟鎹€?/p>
mysql> select * from t1//
+鈥斺€?+
| filed |
+鈥斺€?+
|聽聽聽聽聽0 |
|聽聽聽聽聽1 |
|聽聽聽聽聽2 |
|聽聽聽聽聽3 |
|聽聽聽聽聽4 |
+鈥斺€?+
5 rows in set (0.00 sec)
涓€琛屽氨鏄墽琛岀粨鏋滐紝瀹為檯鐨勪綔鐢ㄥ拰浣跨敤while缂栧啓鐨勫瓨鍌ㄨ繃绋嬩竴鏍凤紝閮芥槸鎻掑叆5琛屾暟鎹€?/p>
鍐嶆潵鐪嬩竴涓嬬涓変釜寰幆鎺у埗璇彞LOOP鈥︹€ND LOOP銆傜紪鍐欎竴涓瓨鍌ㄨ繃绋嬬▼搴忓涓嬶細
mysql> create procedure pro12()
聽聽聽聽-> begin
聽聽聽聽-> declare i int default 0;
聽聽聽聽-> loop_label: loop
聽 |
聽聽聽聽->聽聽聽聽聽insert into t1(filed) values(i);
聽聽聽聽->聽聽聽聽聽set i=i+1;
聽聽聽聽->聽聽聽聽聽if i>=5 then
聽聽聽聽->聽聽聽聽聽聽聽聽聽leave loop_label;
聽聽聽聽->聽聽聽聽聽end if;
聽聽聽聽-> end loop;
聽聽聽聽-> end;//
Query OK, 0 rows affected (0.00 sec)
浠庝笂闈㈣繖涓緥瀛愬彲浠ョ湅鍑猴紝浣跨敤LOOP缂栧啓鍚屾牱鐨勫惊鐜帶鍒惰鍙ヨ姣斾娇鐢╳hile鍜宺epeat缂栧啓鐨勮澶嶆潅涓€浜涳細鍦ㄥ惊鐜唴閮ㄥ姞鍏ヤ簡IF鈥︹€ND IF璇彞锛屽湪IF璇彞涓張鍔犲叆浜哃EAVE璇彞锛孡EAVE璇彞鐨勬剰鎬濇槸绂诲紑寰幆锛孡EAVE鐨勬牸寮忔槸锛歀EAVE 寰幆鏍囧彿銆?br>聽聽聽聽缂栧啓瀹屽瓨鍌ㄨ繃绋嬬▼搴忓悗锛屾潵鎵ц骞舵煡鐪嬩竴涓嬭繍琛岀粨鏋滐細
mysql> delete from t1//
Query OK, 5 rows affected (0.00 sec)
聽
mysql> call pro12//
Query OK, 1 row affected (0.00 sec) #铏界劧璇村彧鏈変竴琛屾暟鎹彈褰卞搷锛屼絾鏄疄闄呬笂鏄彃鍏ヤ簡5琛屾暟鎹€?/p>
mysql> select * from t1//
+鈥斺€?+
| filed |
+鈥斺€?+
|聽聽聽聽聽0 |
|聽聽聽聽聽1 |
|聽聽聽聽聽2 |
|聽聽聽聽聽3 |
|聽聽聽聽聽4 |
+鈥斺€?+
5 rows in set (0.00 sec)
聽聽聽聽鎵ц缁撴灉鍜屼娇鐢╓HILE銆丩OOP缂栧啓鐨勫惊鐜竴鏍凤紝閮芥槸寰€鏍囦腑鎻掑叆5琛屽€笺€?/p>
聽聽聽Labels聽聽聽鏍囧彿鍜?END Labels 缁撴潫鏍囧彿
聽聽聽鍦ㄤ娇鐢╨oop鐨勬椂鍊欙紝浣跨敤鍒扮殑labels鏍囧彿锛屽浜巐abels鍙互鐢ㄥ埌while锛宭oop锛宺repeat绛夊惊鐜帶鍒惰鍙ヤ腑銆傝€屼笖鏈夊繀瑕佸ソ濂借璇嗕竴涓媗ables!锛?br>mysql> create procedure pro13()
聽聽聽聽-> label_1:begin
聽聽聽聽-> label_2:while 0=1 do leave label_2;end while;
聽聽聽聽-> label_3:repeat leave label_3;until 0=0 end repeat;
聽聽聽聽-> label_4:loop leave label_4;end loop;
聽聽聽聽-> end;//
Query OK, 0 rows affected (0.00 sec)
聽聽聽聽涓婇潰杩欓噷渚嬪瓙鏄剧ず浜嗗彲浠ュ湪BEGIN銆乄HILE銆丷EPEAT鎴栬€匧OOP璇彞鍓嶄娇鐢ㄨ鍙ユ爣鍙凤紝璇彞鏍囧彿 鍙兘鍦ㄥ悎娉曠殑璇彞鍓嶄娇鐢紝鎵€浠EAVE label_3鎰忓懗鐫€绂诲紑璇彞鏍囧彿鍚嶄负label_3鐨勮鍙ユ垨绗﹀悎璇彞銆?br>聽聽聽聽鍏跺疄锛屼篃鍙互浣跨敤END labels鏉ヨ〃绀烘爣鍙风粨鏉熺銆?br>mysql> create procedure pro14()
聽聽聽聽-> label_1:begin
聽聽聽聽-> label_2:while 0=1 do leave label_2;end while label_2;
聽聽聽聽-> label_3:repeat leave label_3;until 0=0 end repeat label_3;
聽聽聽聽-> label_4:loop leave label_4;end loop label_4;
聽聽聽聽-> end label_1;//
Query OK, 0 rows affected (0.00 sec)
聽聽聽聽涓婇潰灏辨槸浣跨敤浜嗘爣鍙风粨鏉熺锛屽叾瀹炶繖涓粨鏉熸爣鍙峰苟涓嶆槸鍗佸垎鏈夌敤锛岃€屼笖浠栧繀椤诲拰寮€濮嬪畾涔夌殑鏍囧彿鍚嶅瓧涓€鏍凤紝鍚﹀垯灏变細鎶ラ敊銆傚鏋滆鍏绘垚涓€涓壇濂界殑缂栫▼涔犳儻鏂逛究浠栦汉闃呰鐨勮瘽锛屽彲浠ヤ娇鐢ㄨ繖涓爣鍙风粨鏉熺銆?/p>
ITERATE 杩唬聽聽聽聽聽聽聽聽
聽聽聽聽聽濡傛灉鏄湪ITERATE璇彞锛屽嵆杩唬璇彞涓殑璇濓紝灏卞繀椤讳娇鐢↙EAVE璇彞銆侷TERATE鍙兘鍑虹幇鍦↙OOP锛孯EPEAT鍜學HILE璇彞涓紝瀹冪殑鎰忔€濇槸鈥滃啀娆″惊鐜€濓紝渚嬪锛?br>mysql> create procedure pro15()
聽 |
聽聽聽聽-> begin
聽聽聽聽-> declare i int default 0;
聽聽聽聽-> loop_label:loop
聽聽聽聽->聽聽聽聽聽if i=3 then
聽聽聽聽->聽聽聽聽聽聽聽聽聽set i=i+1;
聽聽聽聽->聽聽聽聽聽聽聽聽聽iterate loop_label;
聽聽聽聽->聽聽聽聽聽end if;
聽聽聽聽->聽聽聽聽聽insert into t1(filed) values(i);
聽聽聽聽->聽聽聽聽聽set i=i+1;
聽聽聽聽->聽聽聽聽聽if i>=5 then
聽聽聽聽->聽聽聽聽聽聽聽聽leave loop_label;
聽聽聽聽->聽聽聽聽聽end if;
聽聽聽聽->聽聽聽end loop;
聽聽聽聽-> end;//
Query OK, 0 rows affected (0.00 sec)
聽聽聽聽iterate璇彞鍜宭eave璇彞涓€鏍凤紝涔熸槸鍦ㄥ惊鐜唴閮ㄤ娇鐢紝瀹冩湁鐐圭被浼间簬C/C++璇█涓殑continue銆?br>聽聽聽聽閭d箞杩欎釜瀛樺偍绋嬪簭鏄€庝箞杩愯鐨勭殑锛熼鍏坕鐨勫€间负0锛屾潯浠跺垽鏂鍙f i=3 then鍒ゆ柇涓哄亣锛岃烦杩噄f璇锛屽悜鏁版嵁搴撲腑鎻掑叆0锛岀劧鍚巌+1锛屽悓鏍峰悗闈㈢殑if i>=5 then鍒ゆ柇涔熶负鍋囷紝涔熻烦杩囷紱缁х画寰幆锛屽悓鏍锋彃鍏?鍜?锛涘湪i=3鐨勬椂鍊欐潯浠跺垽鏂鍙f i=3 then鍒ゆ柇涓虹湡锛屾墽琛宨=i+1锛宨鍊间负4锛岀劧鍚庢墽琛岃凯浠terate loop_label;锛屽嵆璇彞鎵ц鍒癷terate loop_label;鍚庣洿鎺ヨ烦鍒癷f i=3 then鍒ゆ柇璇彞锛屾墽琛屽垽鏂紝杩欎釜鏃跺€欑敱浜巌=4锛宨f i=3 then鍒ゆ柇涓哄亣锛岃烦杩嘔F璇锛屽皢4娣诲姞鍒拌〃涓紝i鍙樹负5锛屾潯浠跺垽鏂璱f i>=5 then鍒ゆ柇涓虹湡锛屾墽琛宭eave loop_label;璺冲嚭loop寰幆锛岀劧鍚庢墽琛宔nd;//锛岀粨鏉熸暣涓瓨鍌ㄨ繃绋嬨€?br>聽聽聽聽缁间笂鎵€杩帮紝鏁版嵁搴撲腑灏嗘彃鍏ユ暟鍊硷細0,1,2,4銆傛墽琛屽瓨鍌ㄨ繃绋嬶紝骞舵煡鐪嬬粨鏋滐細|
mysql> delete from t1//
Query OK, 5 rows affected (0.00 sec)
聽
mysql> call pro15//
Query OK, 1 row affected (0.00 sec)
mysql> select * from t1//
+鈥斺€?+
| filed |
+鈥斺€?+
|聽聽聽聽聽0 |
|聽聽聽聽聽1 |
|聽聽聽聽聽2 |
|聽聽聽聽聽4 |
+鈥斺€?+
4 rows in set (0.00 sec)
鍜屾垜浠笂闈㈠垎鏋愮殑缁撴灉涓€鏍凤紝鍙彃鍏ヤ簡鏁板€?,1,2,4銆?/p>
欢迎大家阅读《MySQL瀛樺偍杩囩▼涓殑三绉嶅惊鐜_mysql》,跪求各位点评,by 搞代码