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

SQL的存儲過程1

編輯:MySQL綜合教程

 

一、MySQL的存儲的過程:一個存儲過程是一個可編程的函數,它在數據庫中創建並保存。當希望在不同的應用程序或平台上執行相同的函數,或者封裝特定功能時,存儲過程是非常有用的。

優點:

1、存儲過程增強了SQL語句的功能和語句靈活性。存儲過程可以用流控制編寫,有很強的靈活性,可以完成復雜的判斷和比較復雜的運算。

       2、存儲過程允許標准組件是編程。儲存過程被創建後,可以在程序中被多次調用,而不必重新編寫該存儲過程的SQL語句。而在數據庫專業人員可以隨時對存儲過程進行修改,對應用程序源代碼毫無影響。

3、存儲過程能過減少網絡流量。針對同一個數據庫對象的操作(如查詢、修改),如果這一操作所涉及的Transaction-SQL語句被組織程存儲過程,那麼當在客戶計算機上調用該存儲過程時,網絡中傳送的只是該調用語句,從而大大增加了網絡流量並降低了網絡負載。

4、存儲過程可被作為一種安全機制來充分利用。系統管理員通過執行某一存儲過程的權限進行限制,能夠實現對相應的數據的訪問權限的限制,避免了非授權用戶對數據的訪問,保證了數據的安全。

二、MySQL存儲過程的創建:

(1)格式

MySQL存儲過程創建的格式:

create procedure 過程名 ([過程參數[,...]])   procedure[特性 ...] 過程體

示例:

\

 

注:

(1)這裡需要注意的是DELIMITER //和DELIMITER ;兩句,DELIMITER是分割符的意思,因為MySQL默認以";"為分隔符,如果我們沒有聲明分割符,那麼編譯器會把存儲過程當成SQL語句進行處理,則存儲過程的編譯過程會報錯,所以要事先用DELIMITER關鍵字申明當前段分隔符,這樣MySQL才會將";"當做存儲過程中的代碼,不會執行這些代碼,用完了之後要把分隔符還原。

(2)存儲過程根據需要可能會有輸入、輸出、輸入輸出參數,這裡有一個輸出參數s,類型是int型,如果有多個參數用","分割開。

(3)過程體的開始與結束使用BEGIN與END進行標識。

這樣,我們的一個MySQL存儲過程就完成了,是不是很容易呢?看不懂也沒關系,接下來,我們詳細的講解。

(2)、 參數

MySQL存儲過程的參數用在存儲過程的定義,共有三種參數類型,IN,OUT,INOUT,形式如:

CREATE PROCEDURE 存儲過程名([[IN |OUT |INOUT ] 參數名 數據類形...])

IN 輸入參數:表示該參數的值必須在調用存儲過程時指定,在存儲過程中修改該參數的值不能被返回,為默認值

OUT 輸出參數:該值可在存儲過程內部被改變,並可返回

INOUT 輸入輸出參數:調用時指定,並且可被改變和返回

 

1、 IN參數例子

 \

 

2、OUT參數例子

\

3、INOUT參數例子

\

 

 


 

摘自 宋利興的專欄

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