MySQL 存儲過程中,使用游標查詢,返回的是結果集時,如何查看調用存儲過程輸出結果呢?
響水網站建設公司成都創新互聯,響水網站設計制作,有大型網站制作公司豐富經驗。已為響水上千多家提供企業網站建設服務。企業網站搭建\成都外貿網站制作要多少錢,請找那個售后服務好的響水做網站的公司定做!
解決方案:存儲過程不返回數據,但它能創建和填充另一個表。所以在存儲過程運行中創建臨時表。該臨時表將保存存儲過程中生成的結果集,在遍歷游標時,用insert保存每條數據到臨時表中。后續調用時可以用select語句查詢臨時表中的存儲過程運行結果。
以下有 三種方式 使用游標創建一個存儲過程,統計某一部門下的員工信息
方法一:Loop循環
調用存儲過程:
方法二:While 循環
調用存儲過程:
方法三:REPEAT 循環
調用存儲過程:
上述三種實現方法在測試過程中遇到下述問題。
調用存儲過程查詢臨時表輸出結果時,會發現多循環了一次,像這樣:
解決方法:
在遍歷游標查詢結果時,先判斷游標的結束標志(done) 是否是為1,如果不是1,則向臨時表中插入數據。
先聲明一個游標,語法:
DECLARE v_1 VARCHAR(16);
DECLARE v_2 VARCHAR(16);
DECLARE c_XXX CURSOR FOR
SELECT c_1, c_2
FROM t_1;
同時聲明一個布爾型的變量FOUND,當循環的條件不成立時,結束循環用的。
DECLARE FOUND BOOLEAN DEFAULT TRUE;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET FOUND = FALSE;
在使用游標的時候,要先打開游標,語法:OPEN c_XXX;
使用的時候,要先打開游標,取出第一條數據,語法: FETCH c_XXX INTO v_1, v_2;
然后才開始執行循環,語法:WHILE FOUND DO
執行需要執行的語句;
取下一條數據放到當前游標中,FETCH c_XXX INTO v_1, v_2;
結束循環,語法:END WHILE;
結束游標,語法:CLOSE c_cargo。有什么問題我們再溝通啊。不知道你具體要問題的是什么。
cursor_sharing string EXACT
cursor_space_for_time boolean TRUE
open_cursors integer 300
session_cached_cursors integer 0
游標超出一般是由于應用中沒有關閉游標造成的
當前標題:怎么看mysql的游標 在mysql中游標包括兩部分
分享網址:http://m.kartarina.com/article26/dogiscg.html
成都網站建設公司_創新互聯,為您提供網站建設、動態網站、外貿建站、網站設計公司、網站排名、域名注冊
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯