新聞中心
mysql存儲(chǔ)過程中iterate對(duì)while起不起效果
在MySQL存儲(chǔ)過程的語句中有三個(gè)標(biāo)準(zhǔn)的循環(huán)方式:WHILE循環(huán),LOOP循環(huán)以及REPEAT循環(huán)。還有一種非標(biāo)準(zhǔn)的循環(huán)方式:GOTO,不過這種循環(huán)方式最好別用,很容易引起程序的混亂,在這里就不錯(cuò)具體介紹了。

順城網(wǎng)站制作公司哪家好,找創(chuàng)新互聯(lián)建站!從網(wǎng)頁設(shè)計(jì)、網(wǎng)站建設(shè)、微信開發(fā)、APP開發(fā)、自適應(yīng)網(wǎng)站建設(shè)等網(wǎng)站項(xiàng)目制作,到程序開發(fā),運(yùn)營維護(hù)。創(chuàng)新互聯(lián)建站從2013年成立到現(xiàn)在10年的時(shí)間,我們擁有了豐富的建站經(jīng)驗(yàn)和運(yùn)維經(jīng)驗(yàn),來保證我們的工作的順利進(jìn)行。專注于網(wǎng)站建設(shè)就選創(chuàng)新互聯(lián)建站。
雖然沒分行,但程序應(yīng)該沒錯(cuò),問題是這個(gè)程序應(yīng)該用在SQL Server之類的數(shù)據(jù)庫里,MySQL不支持@i這樣的自定義變量。如果你要在MySQL中使用的話,需要用存儲(chǔ)過程等方式去實(shí)現(xiàn)。
while是滿足條件才執(zhí)行循環(huán),repeat是滿足條件退出循環(huán);while在首次循環(huán)執(zhí)行之前就判斷條件,最少執(zhí)行0次,repeat是在首次執(zhí)行循環(huán)之后才判斷條件,循環(huán)至少執(zhí)行一次。
存儲(chǔ)過程(mysql),如何跳出循環(huán)?
1、END 這樣就跳出循環(huán)了,也可以換成RETURN,RETURN會(huì)結(jié)束整個(gè)批查詢的執(zhí)行,BREAK僅僅跳出循環(huán),繼續(xù)執(zhí)行后邊的語句。
2、DECLARE CONTINUE HANDLER FOR SQLSTATE 02000 SET DONE = 1;這種語句是異常捕獲內(nèi)容,在mysql中都是使用HANDLER 來捕獲異常的。
3、結(jié)束標(biāo)志是先通過一個(gè)FETCH INTO ,然后判斷游標(biāo)中是否還存在內(nèi)容,如果沒有內(nèi)容就會(huì)執(zhí)行 SET ending = TRUE; (定義代碼中的),然后通過ending的判斷即可跳出循環(huán)。
4、本文實(shí)例講述了MySQL實(shí)現(xiàn)創(chuàng)建存儲(chǔ)過程并循環(huán)添加記錄的方法。
mysql里的存儲(chǔ)過程是怎樣循環(huán)的
1、第一步,編寫存儲(chǔ)過程的整體結(jié)構(gòu),定義變量,見下圖,轉(zhuǎn)到下面的步驟。第二步,完成上述步驟后,定義游標(biāo),具體的代碼見下圖,轉(zhuǎn)到下面的步驟。
2、沒有多循環(huán)一次,只是循環(huán)結(jié)束后,循環(huán)控制變量會(huì)是終值的下一個(gè),但是并沒有多執(zhí)行一次循環(huán)體。
3、傳入id,輸出name和sex的存儲(chǔ)過程,這里同個(gè)id有多條數(shù)據(jù),所以需要用到游標(biāo)。
4、IF vIndex = 0 THEN -- 參數(shù)中沒有逗號(hào),直接返回. RETURN vResult; END IF; -- 初始化情況,前一個(gè)逗號(hào)不存在. SET vPrevIndex = 0; -- 循環(huán)處理。
5、像這種帶有邏輯性的處理,需要寫存儲(chǔ)過程,簡單的sql語句不支持這種業(yè)務(wù)處理。
6、所以要事先用DELIMITER關(guān)鍵字申明當(dāng)前段分隔符,這樣MySQL才會(huì)將當(dāng)做存儲(chǔ)過程中的代碼,不會(huì)執(zhí)行這些代碼,用完了之后要把分隔符還原。
文章題目:mysql怎么退出循環(huán) mysql跳出循環(huán)的關(guān)鍵字
網(wǎng)站鏈接:http://www.dlmjj.cn/article/didshod.html


咨詢
建站咨詢
