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

mysql存儲過程心得

日期:2017/1/20 14:36:14      編輯:MySQL綜合教程

mysql存儲過程心得
  問題:mysql存儲過程的意義?
 存儲過程只在創造時進行編譯,以後每次執行存儲過程都不需再重新編譯,而一般 SQL 語句每執行一次就編譯一次,所以使用存儲過程可提高數據庫執行速度。  存儲過程會預先編譯好sql語句在數據庫服務器,提高了數據查詢的速度,減小了客戶端的壓力
  速度快。尤其是對比較復雜的業務邏輯,減少了網絡間流量的消耗
 存儲過程可以重復使用,可減少數據庫開發人員的工作量

安全性高,可設定只有某此用戶才具有對指定存儲過程的使用權
當對數據庫進行復雜操作時(如對多個表進行 Update,Insert,Query,Delete 時),可將此復雜操作用存儲過程封裝起來與數據庫提供的事務處理結合一起使用。這些操作,如果用程序來完成,就變成了一條條的 SQL 語句,可能要多次連接數據庫。而換成存儲,只需要連接一次數據庫就可以了。
問題:mysql存儲過程使用的時機?

 一個業務對多個表進行查詢的時候比較適合
 復雜的數據處理時,比如報表處理
 多條件並且多表查詢時,如做分頁處理
mysql存儲過程的實戰教程

1 創建一個存儲過程

2.創建存儲函數

3.定義處理程序

方法一:捕獲sqlstate_value
Declare CONTINUE HANDLER FOR SQLSTATE ‘42S02’ SET @info=’cannot  find’;
方法二:捕獲mysql_error_code
Declare CONTINUE HANDLER FOR 1146 SET @info=’con not  find’;
方法三:是定義條件,然後調用
Declare can_not_find CONDITION  FOR 1146;
Declare CONTINUE HANDLER FOR can_not_find set @info=’can not find’;
方法四:使用SQLWARNING
Declare exit handler for SQLWARNING SET @info=’error’;
方法五:使用not found
Declare exit handler for NOT FOUND SET @info=’can not find’;
方法六:使用SQLEXCEPTION
Declare EXIT HANDLERFOR SQLEXCEPTION SET @info=’error’;

4.定義光標

Declare  cur_name varchar(20);
Declare  cur_address varchar(20);
聲明光標
Declare cur_student CURSOR FOR select name,address from student;
打開光標
OPEN  cur_student
使用光標
FETCH cur_student into cur_name,cur_address;
關閉光標
Close  cur_student
5.循環控制流程

循環控制流程

l IF語句
If  age=10 then
  Elseif age=20  then
  Else 
End if;
l Case語句
CASE
  WHEN THEN
  WHER THEN
ELSE
END CASE;

l LOOP語句和LEAVE語句 LEAVE是跳出循環  add_num結束標簽
 add_num LOOP
SET  @count=@count+1;
If  @count=100  then
 LEAVE add_num;
 END LOOP add_num; 

l ITERATE語句 結束本次循環
add_num LOOP
SET  @count=@count+1;
If  @count=100  then
 ITERATE add_num;
Select  * from  student;
 END LOOP add_num;
l Repeat 語句
 Repeat
  Set @count=@count+1;
Unitl @count=100;
  END Repeat;
l While語句
  While  @count<100 DO
  SET @count=@count+1;
  End  while;
6.通過show命令來查看存儲過程和存儲函數信息

7.修改存儲過程和存儲函數的內容

8綜合實例 
現在有一張student表,請創建一個存儲過程(輸入參數一:起始年齡,輸入參數二:結束年齡,輸出參數:符合的學生總數量)


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