mysql存儲過程procedure

上次面試的時候被問到會不會寫存儲過程,因平時工作也用的比較少,在此學習記錄一下已備後期查閱。

1、存儲過程

什麼是存儲過程:存儲過程是一個記錄集,它是由一些T-SQL語句組成的代碼塊,這些T-SQL語句代碼像一個方法一樣實現一些功能(對單表或多表的增刪改查),然後再給這個代碼塊取一個名字,在用到這個功能的時候調即可。

存儲過程的好處

1.由於數據庫執行動作時,是先編譯後執行的。然而存儲過程是一個編譯過的代碼塊,所以執行效率要比T-SQL語句高。

2.一個存儲過程在程序在網絡中交互時可以替代大堆的T-SQL語句,所以也能降低網絡的通信量,提高通信速率。

3.通過存儲過程能夠使沒有權限的用戶在控制之下間接地存取數據庫,從而確保數據的安全。

2、基本語法


create procedure 存儲過程名字()   
(   
[in|out|inout] 參數 datatype   
)   
begin   
MySQL 語句;   
end;

1、調用存儲過程
call pr_no_param();
2、刪除存儲過程

drop procedure pr_name;
 note:不能在一個存儲過程中刪除另一個存儲過程,只能調用另一個存儲過程。

3、show procedure status
        顯示數據庫中所有存儲的存儲過程基本信息,包括所屬數據庫,存儲過程名稱,創建時間等。
4、 show create procedure pr_name
        顯示某一個存儲過程的詳細信息


1. MySQL 存儲過程名字後面的“()”是必須的,即使沒有一個參數,也需要“()”

2. MySQL 存儲過程參數,不能在參數名稱前加“@”

3. MySQL 存儲過程的參數不能指定默認值。

4. MySQL 存儲過程不需要在 procedure body 前面加 “as”。而 SQL Server 存儲過程必須加 “as” 關鍵字

5. 如果 MySQL 存儲過程中包含多條 MySQL 語句,則需要 begin end 關鍵字

6. MySQL 存儲過程中的每條語句的末尾,都要加上分號 “;”

7.註釋,多行註釋/*...*/,

  -- 這是單行 MySQL 註釋 (注意 -- 後至少要有一個空格) 
  # 這也是個單行 MySQL 註釋 

8. 不能在 MySQL 存儲過程中使用 “return” 關鍵字
9. 調用 MySQL 存儲過程時候,需要在過程名字後面加“()”,即使沒有一個參數,也需要“()”
10. 因爲 MySQL 存儲過程參數沒有默認值,所以在調用 MySQL 存儲過程時候,不能省略參數。可以用 null 來替代。

3、實例 參考http://l62s.iteye.com/blog/1532745

表數據入下

3.1只返回單一記錄集的存儲過程(返回整個表)

新建stored procedures

CREATE  PROCEDURE `getuseraccount`()
BEGIN
    select * from useraccount;
END

新建後,新建查詢通過call new_schema.getuseraccount();執行

3.2沒有輸入輸出的存儲過程(插入新的行)

CREATE  PROCEDURE `adduseraccount`()

BEGIN

    insert into useraccount values(22,'FRESHMAN',11,'2013-01-11',21);

END

注意:字符要用引號括起來

3.3其他參考博文

http://l62s.iteye.com/blog/1532745





發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章