MySql存儲(chǔ)過(guò)程游標(biāo)循環(huán)的解決方式
問(wèn)題
在mysql的存儲(chǔ)過(guò)程中使用了游標(biāo)去循環(huán),之前使用是沒(méi)問(wèn)題,后續(xù)加入了一些邏輯,直接跳出循環(huán)了,不走循環(huán)里面的邏輯、
解決
在mysql中主要用以下的方式來(lái)聲明游標(biāo)與使用游標(biāo):
# 聲明標(biāo)志位,來(lái)退出循環(huán) declare done int default 0; # 聲明當(dāng)游標(biāo)中找不到數(shù)據(jù)時(shí),設(shè)置done為1. DECLARE CONTINUE HANDLER FOR NOT FOUND SET done=1;
游標(biāo)的使用:
open cur; posLoop:LOOP fetch cur into v_bjfh,v_yz,v_yjjb,v_dw; if done = 1 then leave posLoop; end if; -- 關(guān)閉循環(huán) end loop posLoop; -- 關(guān)閉游標(biāo) close cur;
現(xiàn)在問(wèn)題關(guān)鍵點(diǎn)在于,走到 if done = 1 時(shí),直接跳出了。那說(shuō)明之前設(shè)置的done的默認(rèn)值沒(méi)有生效。
所以,在進(jìn)入循環(huán)之前,就給done再次設(shè)置一個(gè)默認(rèn)值0。
set done = 0; open cur; posLoop:LOOP fetch cur into v_bjfh,v_yz,v_yjjb,v_dw; if done = 1 then leave posLoop; end if; -- 關(guān)閉循環(huán) end loop posLoop; -- 關(guān)閉游標(biāo) close cur;
由此,解決了問(wèn)題,但是不知道為什么這個(gè)done之前是在哪里給設(shè)置成了1.
調(diào)試
mysql不像oracle那樣,可以進(jìn)行斷點(diǎn)調(diào)試,其實(shí)調(diào)試起來(lái)是比較麻煩。一般采用在里面寫(xiě)select輸出進(jìn)行調(diào)試,如下:
select done;
輸出一個(gè)定義的變量來(lái)進(jìn)行調(diào)試。
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
- MySQL 存儲(chǔ)過(guò)程、游標(biāo)、存儲(chǔ)函數(shù)與觸發(fā)器最佳實(shí)踐
- MySQL存儲(chǔ)過(guò)程、游標(biāo)與觸發(fā)器示例詳解
- mysql存儲(chǔ)過(guò)程游標(biāo)之loop循環(huán)解讀
- mysql存儲(chǔ)過(guò)程多層游標(biāo)循環(huán)嵌套的寫(xiě)法分享
- mysql數(shù)據(jù)庫(kù)存儲(chǔ)過(guò)程之游標(biāo)(光標(biāo)cursor)詳解
- MySql存儲(chǔ)過(guò)程和游標(biāo)的使用實(shí)例
- Mysql 存儲(chǔ)過(guò)程中使用游標(biāo)循環(huán)讀取臨時(shí)表
相關(guān)文章
Node.js對(duì)MySQL數(shù)據(jù)庫(kù)的增刪改查實(shí)戰(zhàn)記錄
這篇文章主要給大家介紹了關(guān)于Node.js對(duì)MySQL數(shù)據(jù)庫(kù)的增刪改查的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作介紹的非常詳細(xì),需要的朋友可以參考下2021-10-10
關(guān)于在sql中使用order by實(shí)現(xiàn)排序出錯(cuò)問(wèn)題
這篇文章主要介紹了關(guān)于在sql中使用order by實(shí)現(xiàn)排序出錯(cuò)問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-08-08
圖文詳解Mysql使用left?join寫(xiě)查詢語(yǔ)句執(zhí)行很慢問(wèn)題的解決
最近工作中遇到一個(gè)非常奇怪的問(wèn)題,mysql中有兩張表,test_info和test_do_info需要進(jìn)行LEFT?JOIN關(guān)聯(lián)查詢,下面這篇文章主要給大家介紹了關(guān)于Mysql使用left?join寫(xiě)查詢語(yǔ)句執(zhí)行很慢問(wèn)題的解決方法2023-04-04
mysql 8.0 錯(cuò)誤The server requested authentication method unkno
在本篇文章里小編給大家整理的是關(guān)于mysql 8.0 錯(cuò)誤The server requested authentication method unknown to the client解決方法,有此需要的朋友們可以學(xué)習(xí)下。2019-08-08
Kettle的MySQL數(shù)據(jù)源版本問(wèn)題及解決
這篇文章主要介紹了Kettle的MySQL數(shù)據(jù)源版本問(wèn)題及解決,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-10-10
Mysql中報(bào)錯(cuò)函數(shù)floor()函數(shù)和rand()函數(shù)的配合使用及原理詳解
在項(xiàng)目中的SQL語(yǔ)句中遇到幾個(gè)數(shù)值處理函數(shù),看著有些懵,就小小的總結(jié)一下,這篇文章主要給大家介紹了關(guān)于Mysql中報(bào)錯(cuò)函數(shù)floor()函數(shù)和rand()函數(shù)的配合使用及原理的相關(guān)資料,需要的朋友可以參考下2022-07-07
mysql 數(shù)據(jù)庫(kù)死鎖原因及解決辦法
這篇文章主要介紹了mysql 數(shù)據(jù)庫(kù)死鎖原因及解決辦法,需要的朋友可以參考下2016-01-01

