【MySQL】存儲過程、遊標、循環簡單實例

有時候僅憑 sql 語句可能達不到想要的數據操做目的,有可能須要寫一些方法體,經過循環判斷等操做最終達到目的。那麼在數據庫裏實現這種方法體就須要存儲過程了,我的以爲一個帶註釋的簡單實例能夠簡單粗暴地解決大部分問題,固然要深刻學習瞭解的話仍是要看教程文檔了,話很少說,上碼:mysql

 

[sql]  view plain  copy
 
  1. create procedure my_procedure() -- 建立存儲過程  
  2. begin -- 開始存儲過程  
  3. declare my_id varchar(32); -- 自定義變量1  
  4. declare my_name varchar(50); -- 自定義變量2  
  5. DECLARE done INT DEFAULT FALSE; -- 自定義控制遊標循環變量,默認false  
  6.   
  7. DECLARE My_Cursor CURSOR FOR ( SELECT id, name FROM t_people ); -- 定義遊標並輸入結果集  
  8. DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE; -- 綁定控制變量到遊標,遊標循環結束自動轉true  
  9.   
  10. OPEN My_Cursor; -- 打開遊標  
  11.   myLoop: LOOP -- 開始循環體,myLoop爲自定義循環名,結束循環時用到  
  12.     FETCH My_Cursor into my_id, my_name; -- 將遊標當前讀取行的數據順序賦予自定義變量12  
  13.     IF done THEN -- 判斷是否繼續循環  
  14.       LEAVE myLoop; -- 結束循環  
  15.     END IF;  
  16.     -- 本身要作的事情,在 sql 中直接使用自定義變量便可  
  17.     UPDATE t_user SET c_name = my_name WHERE id = my_id and rtrim(ltrim(c_name)) = ''; -- 左右去空格  
  18.   
  19.     COMMIT; -- 提交事務  
  20.   END LOOP myLoop; -- 結束自定義循環體  
  21.   CLOSE My_Cursor; -- 關閉遊標  
  22. END; -- 結束存儲過程  

sql 調用存儲過程sql

 

 

[sql]  view plain  copy
 
  1. -- sql 執行存儲過程  
  2. call my_procedure();  

sql 刪除存儲過程數據庫

 

 

[sql]  view plain  copy
 
  1. -- sql 刪除存儲過程  
  2. drop procedure my_procedure;  

 

 

 

End .oop

相關文章
相關標籤/搜索