|名詞定義|
存儲過程(Stored Procedure)是在大型資料庫系統中,一組為了完成特定功能的SQL 語句集,它存儲在資料庫中,一次編譯後永久有效,使用者通過指定存儲過程的名字并給出參數(如果該存儲過程帶有參數)來執行它。存儲過程是資料庫中的一個重要對象。在資料量特别龐大的情況下利用存儲過程能達到倍速的效率提升。
存儲過程是可程式設計的函數,在資料庫中建立并儲存,可以由SQL語句和控制結構組成。當想要在不同的應用程式或平台上執行相同的函數,或者封裝特定功能時,存儲過程是非常有用的。資料庫中的存儲過程可以看做是對程式設計中面向對象方法的模拟,它允許控制資料的通路方式。
| 發展曆程 |
1989年ANSI SQL标準(1989) 提出存儲過程的标準化。
1992年ANSI SQL标準(1992) 提出SQL的商業化标準。
1998年—SQL Server 7.0釋出,SQL Server 7.0開始進軍企業級資料庫市場,存儲過程得到很好的使用。
2000年—SQL Server 2000釋出。
2005年—SQL Server 2005釋出,增強了T-SQL語言,優化了存儲過程的使用。
2008年—SQL Server 2008釋出。
目前Oracle、Hadoop、Hbase、MySQL等所有主流資料庫最新版本都支援存儲過程。
| 技術特點 |
使用存儲過程的好處:
- 減少了伺服器/用戶端網絡流量:過程中的指令作為代碼的單個批處理執行。 這可以顯著減少伺服器和用戶端之間的網絡流量,因為隻有對執行過程的調用才會跨網絡發送。 如果沒有過程提供的代碼封裝,每個單獨的代碼行都不得不跨網絡發送。
- 更強的安全性:多個使用者和用戶端程式可以通過過程對基礎資料庫對象執行操作,即使使用者和程式對這些基礎對象沒有直接權限。 過程控制執行哪些程序和活動,并且保護基礎資料庫對象。 這消除在了單獨的對象級别授予權限的要求,并且簡化了安全層。
- 代碼的重複使用:任何重複的資料庫操作的代碼都非常适合于在過程中進行封裝。這消除了不必要地重複編寫相同的代碼、降低了代碼不一緻性,并且允許擁有所需權限的任何使用者或應用程式通路和執行代碼。
- 更容易維護:在用戶端應用程式調用過程并且将資料庫操作保持在資料層中時,對于基礎資料庫中的任何更改,隻有過程是必須更新的。應用程式層保持獨立,并且不必知道對資料庫布局、關系或程序的任何更改的情況。
- 改進的性能:預設情況下,在首次執行過程時将編譯過程,并且建立一個執行計劃,供以後的執行重複使用。因為查詢處理器不必建立新計劃,是以,它通常用更少的時間來處理過程。如果過程引用的表或資料有顯著變化,則預編譯的計劃可能實際上會導緻過程的執行速度減慢。在此情況下,重新編譯過程和強制新的執行計劃可提高性能。
sql中的存儲過程格式如下:
CREATE PROCEDURE [擁有者.]存儲過程名[;程式編号]
[(參數#1,…參數#1024)]
[WITH
{RECOMPILE | ENCRYPTION | RECOMPILE, ENCRYPTION}
]
[FOR REPLICATION]
AS 程式行
其中存儲過程名不能超過128個字。每個存儲過程中最多設定1024個參數
存儲過程種類分為:
1、系統存儲過程
2、本地存儲過程
3、臨時存儲過程
4、遠端存儲過程
5、擴充存儲過程
| 相關詞 |
Stored Procedure – 存儲過程
RDBMS – 關系資料據庫
IDS -內建資料存儲(Integrated Data Store),這是世界上第一個NDBMS(網狀資料庫管理系統,Network Database Management System),也是第一個資料庫管理系統
Access - 是由微軟釋出的關系資料庫管理系統
MariaDB - 資料庫管理系統是MySQL的一個分支
| 案例展示 |
Oracle – 是甲骨文公司的一種關系資料庫管理系統
SQLServer – 是微軟公司的一種關系資料庫管理系統
MySQL -原本是一個開放源代碼的關系資料庫管理系統,原開發者為瑞典的MySQL AB公司,2009年甲骨文公司收購Sun公司,MySQL成為Oracle旗下産品
PostgreSQL - 是自由的對象-關系型資料庫伺服器
DB2 - 是美國IBM公司發展的一套關系型資料庫管理系統
Hive - 是一個建立在Hadoop架構之上的資料倉庫
|資料來源|
Introduce stored peocedures
https://www.w3schools.com/SQL/sql_stored_procedures.asp存儲過程(資料庫引擎)
https://docs.microsoft.com/zh-cn/sql/relational-databases/stored-procedures/stored-procedures-database-engine?view=sql-server-ver15MySQL存儲過程
https://www.cnblogs.com/mark-chan/p/5384139.html