mysql游标嵌入式_Oracle与MySQL内嵌游标的使用示例
Oracle 游標(biāo)用For循環(huán)比較簡(jiǎn)單,MySQL也是最近才開始用,感覺稍微麻煩一點(diǎn),下邊直接上代碼:
-----------------------------------------------------------
-- Oracle
-- 內(nèi)嵌游標(biāo)為帶參游標(biāo),參數(shù)為外游標(biāo)值
-----------------------------------------------------------
DECLARE
cursor cur_outer is select dept_id from tbl_test_dept;
cursor cur_inner(deptid varchar2) is (SELECT user_id FROM tbl_test_user WHERE dept_id=deptid);
BEGIN
FOR DEPT_ITEM IN cur_outer LOOP
--
--
FOR KEY_ITEM IN cur_process(DEPT_ITEM.DEPT_ID) LOOP --開始內(nèi)循環(huán)
--
--
END LOOP;
END LOOP;
commit;
END;
------------------------------
-- Mysql
-- HANDLER 只能申明一個(gè)
-- 內(nèi)循環(huán)結(jié)束后需要重置done
-- 發(fā)現(xiàn)mysql不能直接執(zhí)行begin..end,需要?jiǎng)?chuàng)建存儲(chǔ)過程后調(diào)用執(zhí)行;
------------------------------
CREATE PROCEDURE `PROC_CURSOR_TEST`()
BEGIN
DECLARE done INT DEFAULT FALSE;
DECLARE item_outer VARCHAR(50);outer
DECLARE item_inner VARCHAR(50);
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;
-- 定義內(nèi)外游標(biāo)
DECLARE cur_outer cursor for select dept_id from tbl_test_dept;
DECLARE cur_inner cursor for (SELECT user_id FROM tbl_test_user WHERE dept_id=item_outer);-- 查詢條件可直接用外游標(biāo)變量值
OPEN cur_outer;
out_loop: LOOP
fetch cur_outer into item_outer;
IF? done THEN -- 判斷是否繼續(xù)循環(huán)
LEAVE out_loop;
END IF;
--
--
OPEN cur_process; -- 打開內(nèi)嵌游標(biāo)
inner_loop: LOOP
fetch cur_inner into item_inner;
IF? done THEN
LEAVE inner_loop;
END IF;
--
--
end loop;
CLOSE cur_inner;
SET done = 0;? -- 關(guān)閉內(nèi)游標(biāo),重置done
end loop;
CLOSE cur_outer;
commit;
END;
call PROC_CURSOR_TEST(); -- 調(diào)用存儲(chǔ)過程
drop procedure PROC_CURSOR_TEST; --刪除
總結(jié)
以上是生活随笔為你收集整理的mysql游标嵌入式_Oracle与MySQL内嵌游标的使用示例的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python语言基础与应用 mooc答案
- 下一篇: ubuntu锁定mysql到任务栏_ub