資料庫 儲存過程

2021-08-06 00:03:19 字數 2409 閱讀 3204

一組為了完成特定功能的sql 語句集,經編譯後儲存在資料庫中。使用者通過指定儲存過程的名字並給出引數(如果有引數)來執行它。

系統儲存過程

以sp_開頭,用來進行系統的各項設定.取得資訊.相關管理工作。

本地儲存過程

使用者建立的儲存過程是由使用者建立並完成某一特定功能的儲存過程,這跟各種程式語言裡使用者自己寫的函式非常類似。我們一般所說的儲存過程就是指本地儲存過程。

臨時儲存過程

分為兩種儲存過程:

一是本地臨時儲存過程,以「#」開頭,這樣的儲存過程就是存放在tempdb資料庫中的本地臨時儲存過程,且只有建立它的使用者才能執行它;

二是全域性臨時儲存過程,以「##」開頭,這樣的儲存過程就是儲存在tempdb資料庫中的全域性臨時儲存過程,全域性臨時儲存過程一旦建立,以後連線到伺服器的任意使用者都可以執行它,而且不需要特定的許可權。

遠端儲存過程

在sql server2005中,遠端儲存過程(remote stored procedures)是位於遠端伺服器上的儲存過程,通常可以使用分布式查詢和execute命令執行乙個遠端儲存過程。

擴充套件儲存過程

擴充套件儲存過程(extended stored procedures)是使用者可以使用外部程式語言編寫的儲存過程,而且擴充套件儲存過程的名稱通常以xp_開頭。

create

procedure procedure_name

--procedure_name為儲存過程名(不能以阿拉伯數字開頭),在乙個資料庫中觸發器名是唯一的。名字的長度不能超過個字。procedure可以簡寫為proc。

@param1 datatype,@param2 datatype

--@param1和@param2為儲存過程的引數,datatype為引數型別,多個引數用逗號隔開,最多允許個引數。

as --儲存過程要執行的操作

begin

--begin跟end組成乙個**塊,可以寫也可以不寫,如果儲存過程中執行的sql語句比較複雜,用begin和end會讓**更加整齊,更容易理解。

endgo --go就代表結操作完畢  

exec procedure_name [引數名] --呼叫儲存過程procedure_name。

drop

procedure procedure_name --刪除儲存過程procedure_name,不能在乙個儲存過程中刪除另乙個儲存過程,只能呼叫另乙個儲存過程

show

procedure status --顯示資料庫中所有儲存的儲存過程基本資訊,包括所屬資料庫,儲存過程名稱,建立時間等

show

create

procedure procedure_name --顯示儲存過程procedure_name的詳細資訊

exec sp_helptext procedure_name --顯示你這個procedure_name這個物件建立文字

執行速度更快。有兩個原因:首先,在儲存過程建立的時候,資料庫已經對其進行了一次解析和優化。其次,儲存過程一旦執行,在記憶體中就會保留乙份這個儲存過程,這樣下次再執行同樣的儲存過程時,可以從記憶體中直接呼叫。  

當對資料庫進行複雜操作時(如對多個表進行update,insert,query,delete時),可將此複雜操作用儲存過程封裝起來與資料庫提供的事務處理結合一起使用。

儲存過程可以重複使用,可減少資料庫開發人員的工作量(復用性高,物件導向的程式設計思想)

安全性高,可設定只有某些使用者才具有對指定儲存過程的使用權

減少網路通訊量。呼叫乙個行數不多的儲存過程與直接呼叫sql語句的網路通訊量可能不會有很大的差別,可是如果儲存過程包含上百行sql語句,那麼其效能絕對比一條一條的呼叫sql語句要高得多。  

更強的適應性:由於儲存過程對資料庫的訪問是通過儲存過程來進行的,因此資料庫開發人員可以在不改動儲存過程介面的情況下對資料庫進行任何改動,而這些改動不會對應用程式造成影響。  

除錯麻煩,但是用 pl/sql developer 除錯很方便!彌補這個缺點。

可移植性差:由於儲存過程將應用程式繫結到 sql server,因此使用儲存過程封裝業務邏輯將限制應用程式的可移植性。如果應用程式的可移植性在您的環境中非常重要,則將業務邏輯封裝在不特定於 rdbms 的中間層中可能是乙個更佳的選擇。

大量採用儲存過程進行業務邏輯的開發致命的缺點是很多儲存過程不支援物件導向的設計,無法採用物件導向的方式將業務邏輯進行封裝,從而無法形成通用的可支援復用的業務邏輯框架。

重新編譯問題,因為後端**是執行前編譯的,如果帶有引用關係的物件發生改變時,受影響的儲存過程、包將需要重新編譯(不過也可以設定成執行時刻自動編譯)。

如果在乙個程式系統中大量的使用儲存過程,到程式交付使用的時候隨著使用者需求的增加會導致資料結構的變化,接著就是系統的相關問題了,最後如果使用者想維護該系統可以說是很難很難、而且代價是空前的,維護起來更麻煩。

資料庫 儲存過程

儲存過程,stored procedure,是在大型資料庫系統中,一組為了完成特定功能的sql語句集,經編譯後儲存在資料庫中,使用者通過指定儲存過程的名字並給出引數 如果該儲存過程帶有引數 來執行它。模擬於c中的函式。mysql與sqlserver是不同的。建立儲存過程 conn getconnec...

資料庫 儲存過程

在資料庫中,儲存過程屬於一種物件,是一種高效的安全的訪問資料庫的方法。下邊我們就資料庫中的儲存過程總結它的相關知識點。我們分為概述,實現和管理三個方面來總結。一,儲存過程的概述 1,概念 儲存過程 storedprocedure 是在資料庫伺服器端執行的一組t sql語句的集合,經編譯後存放在資料庫...

(資料庫) 儲存過程

儲存過程 stored procedure 功能 優點 保證資料的安全性和完整性 執行儲存過程前,資料庫已對其進行了語法和句法分析,並給出了優化執行方案 可以降低網路的通訊量 使體現企業規則的運算程式放入資料庫伺服器中 優缺點概括 缺點 分類 臨時儲存過程 分為兩種儲存過程 遠端儲存過程 在sql ...