SQL必知必會 筆記 第十九章 使用預存程序,sql必知

來源:互聯網
上載者:User

SQL必知必會 筆記 第十九章 使用預存程序,sql必知
19.1預存程序

預存程序:為以後的使用而儲存的一條或多條SQL語句的集合。可將其視為批檔案,雖然它們的作用不僅限於批處理。

19.2為什麼要使用預存程序

使用預存程序的理由
(1)通過把處理封裝在容易使用的單元中,簡化複雜的操作。
(2)由於不要求反覆建立一系列處理步驟,保證了資料的一致性。
(3)簡化對變動的管理。
(4)因為預存程序通常以編譯的形式儲存,所以DBMS為處理命令所做的工作較少。提高了效能。
(5)存在一些只能用在單個請求中的SQL元素和特性,預存程序可以使用它們來編寫功能更強更靈活的代碼。
話句話說,預存程序有三個主要好處:簡單,安全,高效能。
預存程序的缺陷
(1)不同DBMS中的預存程序文法有所不同。事實上,編寫真正的可移植預存程序幾乎是不可能的。不過,預存程序如何自我調用可以相對保持可移植性。
(2)一般來說,預存程序的編寫比基本SQL語句複雜,編寫預存程序需要更高的技能,更豐富的經驗。
大多數DBMS將編寫預存程序的安全和訪問與執行預存程序的安全和訪問區分開來。即使你不能編寫自己的預存程序,也仍然可以在適當的時候執行別的預存程序。

19.3執行預存程序

執行預存程序的SQL語句很簡單,即EXECUTE。EXECUTE接受預存程序名和需要傳遞給它的任何參數。

EXECUTE AddNewProduct('JTS01',     'Stuffed Eiffel Tower',     6.49,     'Plush stuffed toy with the text La Tour Eiffel in red white and blue')

預存程序完成的工作:
(1)檢驗傳遞的資料,保證參數都有值。
(2)產生用作主鍵的唯一ID。
(3)將新產品插入Products表,在合適的列中儲存產生的主鍵和傳遞的資料。

19.4建立預存程序
CREATE PROCEDURE MailingListCount(ListCount OUT NUMBER)ISBEGIN     SELECT * FROM Customers     WHERE NOT cust_email IS NULL;     ListCount := SQL%ROWCOUNT;END;

此預存程序有一個名為ListCount的參數。此參數從預存程序返回一個值而不是傳遞一個值給預存程序。
預存程序的代碼括在BEGIN和END語句中,這裡的執行一條簡單的SELECT語句,它檢索具有郵件地址的客戶。然後用檢索出的行數設定ListCount(要傳遞的輸出參數)。
注釋代碼:應該注釋所有代碼,預存程序也不例外。增加註釋不影響效能,因此不存在缺陷。注釋代碼的好處很多,包括別人更容易理解和更安全修改代碼。

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.