減少伺服器/用戶端網路流量
程序中的指令會以單一批次的程式碼來執行。 這可以大幅降低伺服器與用戶端之間的網路流量,因為網路之間只會傳送執行程序的呼叫。 若程序沒有提供程式碼封裝,則每個個別的程式碼行都會在網路上傳送。
更強的安全性
多個使用者和用戶端程式都可以透過程序,在基礎資料庫物件上執行作業,即使使用者和程式不具備這些基礎物件的直接權限亦可。 程序也會控制要執行哪些程序和活動,並保護基礎資料庫物件。 這可避免在個別物件層級授與權限的需求,而簡化安全層。
重複使用程式碼
任何重複資料庫作業的程式碼,都是程序中非常適合封裝的項目。 這可避免重複撰寫相同程式碼、減少程式碼不一致,並且可讓具備所需權限的任何使用者或應用程式存取及執行程式碼。
維護更簡易
當用戶端應用程式呼叫程序並將資料庫作業保留在資料層中時,若基礎資料庫中有任何變更,只有程序必須更新。 應用程式層會維持獨立,也不需要知道資料庫配置、關聯性或程序間有什麼變更。
提升效能
依預設,第一次編譯程序時,將執行並建立執行計畫,以利後續的執行中重複使用。 由於查詢處理器不需要建立新計畫,通常可以花較少的時間來處理程序。
以下程式碼範例:
USE [Company] --使用哪張資料表
GO
CREATE/ALTER PROCEDURE [USER](@NAME VARCHAR(5))--CREATE為新增,ALTER為修改[]為預存程式的名稱,()為參數,須從外部帶入參數時才需要。
AS
DECLARE @AGE VARCHAR(3)--變數的宣告
IF @AGE = 20--使用IF,如果IF後需要做的指令超過一個需用BEGIN包住
BEGIN
SET NOCOUNT ON--小技巧,加入這行指令的用處是可讓SELECT、INSERT等等指令後不回傳資料到使用端以節省數據量
SELECT * FROM TS_USER--資料處裡區段,在這裡查詢、處理資料
END
沒有留言:
張貼留言