WHAT
說白了,存儲過程就是可以在其中暫時放置參數,輸出參數,結果集的錦囊,這樣要用的時候就可以隨時調用。
WHY
這裏雖然介紹了,但是字太多,不容易理解,我自己總結一下。
1,實時性;2.方便;3.安全;4.模塊化;5.減少網絡流量。這個好像在自考的時候遇見過,好熟悉啊!
另外,視頻還告訴我們存儲過程都有哪些:用戶自定義;系統;擴展這三種。
HOW
接下來,我們看一下存儲過程的相關操作。
創建
這個格式寫得太複雜,其中,@parameter 是爲存儲過程聲明參數的意思,varying 是說存儲過程的類型,是默認還是存儲輸出參數,recompile是重新編輯,encrytion 是加密。
從第二張圖片我們也能看出來,存儲過程雖然格式複雜,但是其創建並不難。
使用帶默認值的參數
這個帶有默認值的參數,就是我們的語句中的@departmentID,@zhiwei,我還納悶,爲什麼這裏部門編號和職位要用英文版,原來這是存儲過程中的參數。
使用輸出函數
上面的例子便使用了output輸出函數,但是這裏出現了一個錯誤,另外,還有第二張圖片是另一個例子,這個例子呢,告訴我們,存儲過程不僅能夠查詢語句,還能執行各種操作。
修改
別看他這個格式這麼多字,但是跟創建的時候非常相似,只不過將create 改成了alter。要想修改,首先要找到你想要修改的存儲過程,找到數據庫--展開可編程性--展開存儲過程,然後便可以找到已經創建的存儲過程,右擊找到修改,進行修改就可以了。
如果想要獲取存儲過程的語句,按照上面第三張圖片的順序就可以。
刪除
不論是數據庫,表格還是存儲過程,刪除都是最簡單的,而且都有兩種方式:使用語句drop proc +名稱,或者使用系統操作。
規則
簡單來說,就是,設計存儲過程時,對象,臨時表都可以引用,包括若要引用另一個存儲過程。存儲過程僅受最大爲128MB的內存限制,且最大數量爲2100.
存儲過程之系統、臨時、嵌套以及查看
系統存儲過程就是已經存在的存儲過程,我們可以直接查看或者調用,而臨時存儲過程則只對當前頁面的語句有效。臨時存儲過程和一般存儲過程一樣,需要我們自己創建;正如圖二所示;嵌套嘛,就肯定不是一個,自然我們也能看到我們能夠同時看到兩個表格被調用出來,但這也只能同時嵌套32層;所以這裏報錯了,那麼是因爲什麼呢?經過查證後,我發現exec get_classinfo 執行了兩次,就會報錯,別的博客上說的是,第二次在執行是在測試,沒有限制@@nestlevel參數,因而形成了死循環。
而查看存儲過程與上述獲取存儲過程語句的方式是一樣的。