Oracle與MySQL內嵌遊標的使用示例
Oracle 遊標用For迴圈比較簡單,MySQL也是最近才開始用,感覺稍微麻煩一點,下邊直接上程式碼:
-----------------------------------------------------------
-- Oracle
-- 內嵌遊標為帶參遊標,引數為外遊標值
-----------------------------------------------------------
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 --開始內迴圈
--
--
END LOOP;
END LOOP;
commit;
END;
------------------------------
-- Mysql
-- HANDLER 只能申明一個
-- 內迴圈結束後需要重置done
-- 發現mysql不能直接執行begin..end,需要建立儲存過程後呼叫執行;
------------------------------
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;
-- 定義內外遊標
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);-- 查詢條件可直接用外遊標變數值
OPEN cur_outer;
out_loop: LOOP
fetch cur_outer into item_outer;
IF done THEN -- 判斷是否繼續迴圈
LEAVE out_loop;
END IF;
--
--
OPEN cur_process; -- 開啟內嵌遊標
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; -- 關閉內遊標,重置done
end loop;
CLOSE cur_outer;
commit;
END;
call PROC_CURSOR_TEST(); -- 呼叫儲存過程
drop procedure PROC_CURSOR_TEST; --刪除
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31530407/viewspace-2152932/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Android/iOS內嵌Unity開發示例AndroidiOSUnity
- 內嵌樣式標記style
- Oracle顯示遊標的使用及遊標for迴圈Oracle
- C指標原理(7)-C內嵌彙編指標
- C指標原理(8)-C內嵌彙編指標
- C指標原理(6)-C內嵌彙編指標
- 內嵌標籤frameset框架屬性及用法框架
- 24. 使用MySQL之使用遊標MySql
- SqlServer遊標的建立與使用SQLServer
- Oracle遊標Oracle
- 使用iframe內嵌網頁的時候,如何做到內嵌網頁的高度自適應 有大用網頁
- SpringMVC使用Jetty作為內嵌伺服器SpringMVCJetty伺服器
- JDK中內嵌JS引擎介紹及使用JDKJS
- Mysql中常用函式的使用示例MySql函式
- Nginx 內嵌變數Nginx變數
- mysql與Oracle的區別MySqlOracle
- MongoDB查詢內嵌文件MongoDB
- Mysql儲存過程中使用多遊標MySql儲存過程
- 遊戲內嵌社群服務開放,助力開發者提升玩家互動與留存遊戲
- Spring Boot移除內嵌Tomcat,使用非web方式啟動Spring BootTomcatWeb
- 使用一個Oracle MySQL的理念OracleMySql
- 淺談小程式內嵌網頁及內嵌網頁跳轉分享實現網頁
- PHP 中,pack 與 unpack 的使用示例。PHP
- 解析JDBC使用查詢MySQL【非流式、流式、遊標】JDBCMySql
- 掌握Go型別內嵌:設計模式與架構的新視角Go型別設計模式架構
- 小程式內嵌h5H5
- Spring Boot 內嵌容器 Tomcat / UndertowSpring BootTomcat
- Oracle - 共享遊標、父子游標、硬軟解析Oracle
- Oracle 11.1 自適應遊標Oracle
- Oracle開發基礎-遊標Oracle
- oracle 序列的建立與使用Oracle
- Oracle遊標遍歷%rowtype中的記錄Oracle
- Debug: calc() 未生效 <= 內嵌樣式表示式需使用空格分隔
- 傳遞指標引數(函式內部給指標賦值)示例指標函式賦值
- MySQL過程和遊標MySql
- SVG 立方體內嵌路徑拼接SVG
- 客戶端內嵌Vue頁面客戶端Vue
- C++內嵌彙編 教程1C++