Mysql存儲(chǔ)過(guò)程循環(huán)內(nèi)嵌套使用游標(biāo)示例代碼
更新時(shí)間:2014年08月01日 09:38:49 投稿:whsnow
本節(jié)主要介紹了Mysql存儲(chǔ)過(guò)程循環(huán)內(nèi)如何嵌套使用游標(biāo),詳細(xì)實(shí)現(xiàn)如下,需要的朋友不要錯(cuò)過(guò)
BEGIN -- 聲明變量 DECLARE v_addtime_begin varchar(13); DECLARE v_addtime_end varchar(13); DECLARE v_borrow_id int; DECLARE v_count int; DECLARE s1 int; /** 聲明游標(biāo),并將查詢結(jié)果存到游標(biāo)中 **/ DECLARE c_borrow CURSOR FOR SELECT ID from rocky_borrow WHERE BORROWTYPE = 2 AND PUBLISH_TIME >= UNIX_TIMESTAMP('2014-05-27') AND PUBLISH_TIME <= UNIX_TIMESTAMP('2014-07-30') ORDER by ID ASC; /** 獲取查詢數(shù)量 **/ SELECT count(ID) INTO v_count from rocky_borrow WHERE BORROWTYPE = 2 AND PUBLISH_TIME >= UNIX_TIMESTAMP('2014-05-27') AND PUBLISH_TIME <= UNIX_TIMESTAMP('2014-07-30') ORDER by ID ASC; SET s1 = 1; -- 開(kāi)始事務(wù) START TRANSACTION; -- 打開(kāi)游標(biāo) OPEN c_borrow; -- 循環(huán)游標(biāo) WHILE s1 < v_count+1 DO -- 遍歷游標(biāo) FETCH c_borrow INTO v_borrow_id; SELECT t1.addtime INTO v_addtime_begin FROM (SELECT * FROM rocky_b_tenderrecord bt WHERE BORROW_ID = v_borrow_id AND tender_type = 1 ORDER BY ID ASC) t1 GROUP BY t1.borrow_id; SELECT t1.addtime INTO v_addtime_end FROM (SELECT * FROM rocky_b_tenderrecord bt WHERE BORROW_ID = v_borrow_id AND tender_type = 1 ORDER BY ID DESC) t1 GROUP BY t1.borrow_id; IF (v_addtime_begin IS NOT NULL) && (v_addtime_end IS NOT NULL) THEN -- 嵌套使用游標(biāo) BEGIN DECLARE v_id int; DECLARE v_user_id int; DECLARE v_type varchar(20); DECLARE v_total decimal(20,8) DEFAULT 0; DECLARE v_money decimal(20,8) DEFAULT 0; DECLARE v_use_money decimal(20,8) DEFAULT 0; DECLARE v_no_use_money decimal(20,8) DEFAULT 0; DECLARE v_collection decimal(20,8) DEFAULT 0; DECLARE v_to_user int(11); DECLARE v_remark VARCHAR(1000); DECLARE v_addtime varchar(13); DECLARE v_addip varchar(64); DECLARE v_first_borrow_use_money decimal(20,8) DEFAULT 0; DECLARE done VARCHAR(45) DEFAULT ''; DECLARE t_error int DEFAULT 0; DECLARE c_accountlog CURSOR FOR SELECT ID,USER_ID,TYPE,TOTAL,MONEY,USE_MONEY,NO_USE_MONEY,COLLECTION,TO_USER,REMARK,ADDTIME,ADDIP,FIRST_BORROW_USE_MONEY FROM ( SELECT ID,USER_ID,TYPE,TOTAL,MONEY,USE_MONEY,NO_USE_MONEY,COLLECTION,TO_USER,REMARK,ADDTIME,ADDIP,FIRST_BORROW_USE_MONEY FROM rocky_accountlog WHERE ADDTIME >= v_addtime_begin AND ADDTIME <= v_addtime_end AND (type = 'tender_cold' or type= 'repayment_deduct') ) t GROUP BY t.user_id HAVING count(t.user_id) > 1; DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = NULL; OPEN c_accountlog; FETCH c_accountlog INTO v_id,v_user_id,v_type,v_total,v_money,v_use_money,v_no_use_money,v_collection,v_to_user,v_remark,v_addtime,v_addip,v_first_borrow_use_money; WHILE (done IS NOT NULL) DO INSERT INTO rocky_accountlog_test2 (ACCOUNTLOG_ID,USER_ID,TYPE,TOTAL,MONEY,USE_MONEY,NO_USE_MONEY,COLLECTION,TO_USER,REMARK,ADDTIME,ADDIP,FIRST_BORROW_USE_MONEY,BORROW_ID) VALUES (v_id,v_user_id,v_type,v_total,v_money,v_use_money,v_no_use_money,v_collection,v_to_user,v_remark,v_addtime,v_addip,v_first_borrow_use_money,v_borrow_id); FETCH c_accountlog INTO v_id,v_user_id,v_type,v_total,v_money,v_use_money,v_no_use_money,v_collection,v_to_user,v_remark,v_addtime,v_addip,v_first_borrow_use_money; END WHILE; CLOSE c_accountlog; END; END IF; SET s1 = s1 + 1; END WHILE; CLOSE c_borrow; COMMIT; -- 事務(wù)提交 END
您可能感興趣的文章:
- MySql存儲(chǔ)過(guò)程循環(huán)的使用分析詳解
- Mysql 存儲(chǔ)過(guò)程中使用游標(biāo)循環(huán)讀取臨時(shí)表
- 詳解MySql存儲(chǔ)過(guò)程參數(shù)的入門(mén)使用
- MySQL存儲(chǔ)過(guò)程中使用WHILE循環(huán)語(yǔ)句的方法
- 詳解MySQL存儲(chǔ)過(guò)程的創(chuàng)建和調(diào)用
- mysql創(chuàng)建存儲(chǔ)過(guò)程及函數(shù)詳解
- MySQL之存儲(chǔ)過(guò)程按月創(chuàng)建表的方法步驟
- mysql存儲(chǔ)過(guò)程之創(chuàng)建(CREATE PROCEDURE)和調(diào)用(CALL)及變量創(chuàng)建(DECLARE)和賦值(SET)操作方法
- MySQL動(dòng)態(tài)創(chuàng)建表,數(shù)據(jù)分表的存儲(chǔ)過(guò)程
- MySQL存儲(chǔ)過(guò)程的創(chuàng)建和使用示例詳解
相關(guān)文章
mysql報(bào)錯(cuò)sql_mode=only_full_group_by解決
這篇文章主要為大家介紹了mysql報(bào)錯(cuò)sql_mode=only_full_group_by解決,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-08-08MySQL無(wú)法存儲(chǔ)Emoji表情問(wèn)題的解決方法分析
這篇文章主要介紹了MySQL無(wú)法存儲(chǔ)Emoji表情問(wèn)題的解決方法,結(jié)合實(shí)例形式分析了存儲(chǔ)Emoji表情報(bào)錯(cuò)的原因及相應(yīng)的解決方法,需要的朋友可以參考下2018-07-07MySQL數(shù)據(jù)庫(kù)忽略大小寫(xiě)的配置方法
這篇文章主要給大家介紹了MySQL數(shù)據(jù)庫(kù)忽略大小寫(xiě)的配置方法,文中通過(guò)代碼示例給大家講解的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下2024-01-01MySQL大小寫(xiě)敏感導(dǎo)致的問(wèn)題分析
在本篇內(nèi)容里小編給大家整理了關(guān)于MySQL大小寫(xiě)敏感導(dǎo)致的問(wèn)題的詳細(xì)分析,有興趣的朋友們可以學(xué)習(xí)參考下。2019-06-06MySQL查看event執(zhí)行記錄的實(shí)現(xiàn)
在使用EVENT的過(guò)程中,我們可能會(huì)需要查看EVENT的執(zhí)行記錄,以便了解它們是否按預(yù)期執(zhí)行,本文就來(lái)介紹一下MySQL查看event執(zhí)行記錄的實(shí)現(xiàn),感興趣的可以了解一下2023-11-11