為了搞明白為什麼mysql的存儲過程是高效的,我們需要理解mysql的執行流程是什麼,當輸入sql語句之後,mysql會先進行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;