SQL語句在執行時要先編譯,然后再能被執行。在大型的數據庫中,為了提高效率,將為了完成特定功能的SQL語句集進行編譯優化后,存儲在數據庫服務器中,用戶指定存儲過程的名字來調用執行。
創建 MySQL 存儲過程的簡單語法為:create PRocedure 存儲過程名字()( [in|out|inout] 參數 datatype)begin MySQL 語句;end;使用存儲過程可以增強SQL語句的功能和靈活性,由于可以用流程控制語句編寫存儲過程,有很強的靈活性,因此可以完成復雜的判斷和運算,并且可以保證數據的安全性和完整性。同時,存儲過程可以使沒有權限的用戶在控制之下間接地存儲數據庫,也保證了數據的安全、
存儲過程與存儲函數的區別:
(1)存儲過程一般是作為一個獨立的部分來執行,存儲函數可以作為查詢語句的一個部分來調用,由于函數可以返回一個對象,因此可以在查詢語句中位于FROM關鍵字后面。
(2)一般而言,存儲過程是實現的功能較復雜,而函數實現的功能針對性較強。
(3)函數需要括號包住輸入的參數,且只能返回一個對象或者表對象,而存儲過程可以返回多個參數。
(4)函數可以嵌入在SQL中使用,可以在select語句中使用,存儲過程不可以。
(5)函數不能直接操作實體表,只能操作內建表。
(6)存儲過程在創建時即在服務器上進行了編譯,其執行速度比函數快。
新聞熱點
疑難解答