首頁  >  文章  >  資料庫  >  mysql預存程序語法是什麼

mysql預存程序語法是什麼

WBOY
WBOY原創
2022-02-17 14:46:416810瀏覽

在mysql中,可以利用「CREATE PROCEDURE」語句建立預存程序,語法為「CREATE PROCEDURE 過程名稱 過程參數 過程體 過程參數 格式 [IN|OUT|INOUT] 參數名稱 類型」。

mysql預存程序語法是什麼

本教學操作環境:windows10系統、mysql8.0.22版本、Dell G3電腦。

mysql預存程序語法是什麼

SQL語句需要先編譯然後執行,而預​​存程序(Stored Procedure)是一組為了完成特定功能的SQL語句集,經編譯後儲存在在資料庫中,使用者透過指定預存程序的名字並給定參數(如果該預存程序帶有參數)來呼叫執行它。

預存程序是可程式化的函數,在資料庫中建立並儲存,可以由SQL語句和控制結構組成。當想要在不同的應用程式或平台上執行相同的函數,或封裝特定功能時,預存程序是非常有用的。資料庫中的預存程序可以看做是對程式設計中物件導向方法的模擬,它允許控制資料的存取方式。

預存程序的優點:

(1).增強SQL語言的功能與彈性:預存程序可以用控制語句寫,有很強的彈性,可以完成複雜的判斷和較複雜的運算。

(2).標準元件式程式設計:預存程序被建立後,可以在程式中被多次調用,而不必重新編寫該預存程序的SQL語句。而且資料庫專業人員可以隨時對預存程序進行修改,對應用程式原始碼毫無影響。

(3).較快的執行速度:如果某一操作包含大量的Transaction-SQL程式碼或分別被多次執行,那麼預存程序要比批次的執行速度快很多。因為預存程序是預編譯的。在首次運行預存程序時查詢,優化器對其進行分析優化,並且給出最終被儲存在系統表中的執行計劃。而批次的Transaction-SQL語句在每次執行時都要進行編譯和最佳化,速度相對要慢一些。

(4).減少網路流量:針對同一個資料庫物件的操作(如查詢、修改),如果這一操作所涉及的Transaction-SQL語句被組織進預存過程,那麼當在客戶計算機上呼叫該預存程序時,網路中傳送的只是該呼叫語句,從而大大減少網路流量並降低了網路負載。

(5).作為一種安全機制來充分利用:透過對執行某一預存程序的權限進行限制,能夠實現對相應的數據的存取權限的限制,避免了非授權用戶對數據的訪問,保證了資料的安全。

MySQL的預存程序

預存程序是資料庫的一個重要的功能,MySQL 5.0以前不支援預存程序,這使得MySQL在應用程式上大打折扣。好在MySQL 5.0開始支援預存程序,這樣即可以大幅提高資料庫的處理速度,同時也可以提高資料庫程式設計的彈性。

MySQL預存程序的建立

語法

CREATE PROCEDURE  过程名([[IN|OUT|INOUT] 参数名 数据类型[,[IN|OUT|INOUT] 参数名 数据类型…]]) [特性 ...] 过程体
DELIMITER //
  CREATE PROCEDURE myproc(OUT s int)
    BEGIN
      SELECT COUNT(*) INTO s FROM students;
    END
    //
DELIMITER ;

分隔符號

MySQL預設以";"為分隔符,如果沒有宣告分割符,則編譯器會把預存程序當成SQL語句處理,因此編譯過程會報錯,所以要事先用「DELIMITER //」宣告當前段分隔符,讓編譯器把兩個"//"之間的內容當做預存程序的程式碼,不會執行這些程式碼;「DELIMITER ;」的意為把分隔符號還原。

參數

預存程序依需求可能會有輸入、輸出、輸入輸出參數,如果有多個參數以","分割開。 MySQL預存程序的參數用在預存程序的定義,共有三種參數型別,IN,OUT,INOUT:

IN參數的值必須在呼叫預存程序時指定,在預存程序中修改該參數的值不能被傳回,為預設值

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

INOUT:呼叫時指定,並且可被變更和傳回

過程體

過程體的開始與結束使用BEGIN與END進行識別。

推薦學習:mysql影片教學

#

以上是mysql預存程序語法是什麼的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn