程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MySQL綜合教程 >> Mysql存儲過程分析,mysql存儲過程

Mysql存儲過程分析,mysql存儲過程

編輯:MySQL綜合教程

Mysql存儲過程分析,mysql存儲過程


為了搞明白為什麼mysql的存儲過程是高效的,我們需要理解mysql的執行流程是什麼,當輸入sql語句之後,mysql會先進行sql語句語法正確性檢查,然後再進行編譯,然後才執行,最後把結果返回。如下圖所示:

  什麼是存儲過程? 存儲過程是sql語句和控制語句的預編譯集合,以一個名稱存儲並作為一個單元處理。   存儲過程的優點: 1 增強了sql語句的功能和靈活性 2 實現較快的執行速度 3 減少了網絡流量   創建存儲過程 CREATE 用戶 PROCEDURE 存儲過程名稱(參數1,參數2,...) 過程體         參數的類型有三種:IN OUT INOUT       過程體:過程體由任意的合法的sql語句組成,不包含建庫建表的SQL     簡單的創建存儲過程案例       #創建不帶參數      
 mysql> create PROCEDURE select_version() select version();     

 

      #創建帶IN參數的
1 mysql> delimiter //       
2       mysql> create procedure remove_nav(IN id int unsigned)
3       -> begin
4       -> delete from yiqi_navigate where navid=id;
5       -> end
6       -> //
7       Query OK, 0 rows affected (0.00 sec)
8      mysql> delimiter ;
9      mysql> call remove_nav(10);
     注意:參數名不要跟條件名稱重復,否則可能全刪了。修改定界符為//,是為了過程體的語句  能正常   #創建帶IN OUT的參數,IN參數是輸入參數,OUT是返回的值        mysql> delimiter // mysql> create procedure rem_nav_return(IN id int unsigned,OUT name varchar(64))     -> begin     -> delete from yiqi_navigate where navid= id;     -> select count(navid) from yiqi_navigate INTO name;     說明:select返回值賦值給name     -> end     -> // Query OK, 0 rows affected (0.01 sec)   mysql> delimiter ; mysql>  call rem_nav_return(9,@nums);   這裡的@nums是客戶端變量   刪除存儲過程 #使用drop procedure  存儲過程名 mysql> drop procedure remove_link;        

 

       

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved