mysql總結8----遊標的學習

 聲明:對於遊標,我也沒有咋用過,有些東西也不是很理解。這裏給你們拷貝過來一個簡單的demo。我加里一些註釋。但願對大家學習有幫助!!java

 

 

  
  
  
  
  1. 1.遊標:遊標是用於在存儲過程當中迭代SELECT查詢出的數據。 
  2.  
  3. 2.遊標的使用步驟: 
  4.  
  5. ①:聲明:DECLARE  ordernums CURSOR fro SELECT order_num FROM orders; 
  6. (說明: 
  7. <1>.使用DECLARE定義遊標語句必須定義在變量語句以後。 
  8. <2>.ordernums是表示遊標名。 
  9. <3>.cursor是表示遊標。 
  10.  
  11. ②:打開遊標。OPEN ordernums; 
  12.  
  13. ③:關閉遊標。CLOSE ordernums; 
  14.  
  15.  
  16.  
  17. 3.舉個例子: 
  18.  
  19. DELIMITER // 
  20. CREATE PROCEDURE processorders()  /*定義存儲過程*/ 
  21. BEGIN 
  22. DECLARE done BOOLEAN; /*定義一個變量*/ 
  23. DECLARE num INT; /*定義一個變量*/ 
  24. DECLARE ordernumbers CURSOR FOR SELECT order_num FROM orders; /*定義遊標;必須定義在變量以後!*/ 
  25. DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done=1; /*定義句柄。continue設定循環退出條件。*/ 
  26. /*當sqlstate爲’02000‘時,設置done的值爲1,02000是指一個沒有找到的錯誤碼*/ 
  27. /*sqlstate是mysql的規定。表示找到最後無數據時,mysql報出的狀態碼!!*/ 
  28. OPEN ordernumbers; /*打開遊標*/ 
  29. REPEAT /*循環開始*/ 
  30. FETCH ordernumbers INTO num; /*獲取一行一列的數據*/ 
  31. INSERT INTO t_table(val) VALUES(num); /*插入到t_table表中*/ 
  32. UNTIL done END REPEAT; /*相似於java中的do...while循環*/ 
  33. CLOSE ordernumbers ; /*關閉遊標*/ 
  34. END // 
  35. DELIMITER ; 
  36.  
  37. /*調用遊標:*/ 
  38. CALL processorders(); 
  39.  
  40. 4.多列遊標的聲明: 
  41. DECLARE ordernumbers CURSOR FOR SELECT order_num,cust_id FROM orders; 
  42. 對應的FETCH的用法:FETCH ordernumbers INTO num,id; 
相關文章
相關標籤/搜索