黄色电影一区二区,韩国少妇自慰A片免费看,精品人妻少妇一级毛片免费蜜桃AV按摩师 ,超碰 香蕉

SQL Server 存儲過程

SQL Server 存儲過程

SQL Server 中視圖通過簡單的 SELECT 查詢來解決復(fù)雜的查詢,但是視圖不能提供業(yè)務(wù)邏輯功能,而存儲過程可以辦到這點。

 

什么是存儲過程?

存儲過程 Procedure 是一組為了完成特定功能的 SQL 語句集合,經(jīng)編譯后存儲在數(shù)據(jù)庫中,用戶通過指定存儲過程的名稱并給出參數(shù)來執(zhí)行。
存儲過程中可以包含邏輯控制語句和數(shù)據(jù)操縱語句,它可以接受參數(shù)、輸出參數(shù)、返回單個或多個結(jié)果集以及返回值。
由于存儲過程在創(chuàng)建時即在數(shù)據(jù)庫服務(wù)器上進行了編譯并存儲在數(shù)據(jù)庫中,所以存儲過程運行要比單個的 SQL 語句塊要快。同時由于在調(diào)用時只需用提供存儲過程名和必要的參數(shù)信息,所以在一定程度上也可以減少網(wǎng)絡(luò)流量、簡單網(wǎng)絡(luò)負擔(dān)。

 

存儲過程的優(yōu)點

下面是一些在使用存儲過程的主要優(yōu)點:

好處 說明
模塊化編程 可以寫一個存儲過程一次,然后一次又一次地調(diào)用它,從應(yīng)用程序的不同部分(甚至多個應(yīng)用程序)。
性能 存儲過程提供更快的代碼執(zhí)行和減少網(wǎng)絡(luò)流量。
  • 更快的執(zhí)行:存儲過程進行解析,并為他們創(chuàng)造盡快優(yōu)化和存儲過程是存儲在內(nèi)存中。這意味著它會執(zhí)行比從應(yīng)用程序到SQL Server發(fā)送SQL多行代碼快了很多。這樣做需要SQL Server來編譯和每次運行時優(yōu)化改進你的SQL代碼。
  • 減少網(wǎng)絡(luò)流量:如果通過網(wǎng)絡(luò)發(fā)送的SQL多行代碼到你的SQL Server中,這會影響網(wǎng)絡(luò)性能。如果你有數(shù)以百計的SQL代碼行和/或你有很多活動在應(yīng)用程序,這是尤其如此。運行SQL Server上的代碼(作為存儲過程中)消除了需要發(fā)送此代碼在網(wǎng)絡(luò)上。唯一的網(wǎng)絡(luò)通信將提供的參數(shù)和任何查詢的結(jié)果。
安全 用戶無需執(zhí)行任何直接的語句可以執(zhí)行存儲過程。因此,存儲過程可以誰也不能正常訪問這些任務(wù)的用戶提供先進的數(shù)據(jù)庫功能,但這種功能是在嚴格控制的方式提供。

 

SQL Server 創(chuàng)建一個存儲過程

我們需要使用 CREATE PROCEDURE 語句創(chuàng)建一個存儲過程,接著要補充存儲過程的代碼,如果存儲過程將要接受參數(shù),它們需要被包括在名稱后,如下:

CREATE PROCEDURE myStoredProcedure AS
...

OR

CREATE PROCEDURE myStoredProcedure @{Parameter Name} {data type} AS
...

詳細示例

下述代碼創(chuàng)建了一個被稱為 “LatestTasks” 的存儲過程。
它接受一個參數(shù)名為 @Count. 當(dāng)調(diào)用這個存儲過程,通過 @count 參數(shù),它決定你想要多少行返回。
代碼如下:

CREATE PROCEDURE LatestTasks @Count int AS
SET ROWCOUNT @Count
SELECT TaskName AS LatestTasks, DateCreated
FROM Tasks
ORDER BY DateCreated DESC

在SQL Server管理套件運行這段代碼,會看到它被在存儲過程節(jié)點創(chuàng)建為 “LatestTasks”。

在SQL Server 2014,可以在存儲過程節(jié)點/文件夾中創(chuàng)建通過右鍵單擊一個存儲過程,選擇存儲過程....這將打開一個模板,這是隨時可以填入自己的具體程序。

 

SQL Server 執(zhí)行存儲過程

創(chuàng)建了存儲過程后,要在任何時候執(zhí)行它,可以執(zhí)行或者調(diào)用 EXEC。如果存儲過程的參數(shù)要求提供這些程序名在后面,像這樣:

EXECUTE LatestTasks
EXEC LatestTasks

EXEC LatestTasks @Count = 5

詳細示例

在下面的例子中,我們在同一時間執(zhí)行兩次存儲過程。
我們第一次調(diào)用它的時候 @Count 傳遞值為 3,第二次傳遞的值為 5。
該截圖顯示,通過傳遞參數(shù)(和值),存儲過程返回結(jié)果的基礎(chǔ)上提供值。頂端結(jié)果集返回3行,因為我們通過值3。第二個結(jié)果集返回5行,因為我們提供一個值5:

 

SQL Server 使用GUI

還可以使用圖形用戶界面來執(zhí)行存儲過程。

具體方法如下:

  • 使用對象資源管理器,瀏覽到存儲過程
  • 右鍵單擊該存儲過程并選擇 Execute Stored Procedure...:
  • 會出現(xiàn)一個對話框。輸入您所選擇的參數(shù)值:
  • 點擊 OK
  • SQL Server 現(xiàn)在會生成 SQL 代碼并執(zhí)行存儲過程。
  •  

    SQL Server 修改存儲過程

    如果需要修改現(xiàn)有的存儲過程,只需更換掉 CREATE ,使用 ALTER。
    我們在 “Latest” 和 “Tasks”間添加一個空格(即“Latest Tasks”),并添加描述字段,如下:

    ALTER PROCEDURE LatestTasks @Count int AS
    SET ROWCOUNT @Count
    SELECT TaskName AS "Latest Tasks", Description, DateCreated
    FROM Tasks
    ORDER BY DateCreated DESC
    

     

    SQL Server 系統(tǒng)存儲過程

    SQL Server 包含了大量的系統(tǒng)存儲過程,以幫助數(shù)據(jù)庫管理任務(wù)。
    通過 GUI 執(zhí)行的任務(wù)可以通過系統(tǒng)存儲過程來完成。
    例如,有些東西可以用系統(tǒng)存儲過程的包括:

  • 配置安全帳戶
  • 建立鏈接服務(wù)器
  • 創(chuàng)建一個數(shù)據(jù)庫維護計劃
  • 創(chuàng)建全文檢索目錄
  • 添加遠程登錄
  • 配置復(fù)制
  • 設(shè)置調(diào)度作業(yè)
  • 以及更多...
  •  

    SQL Server 命名約定

    一起來看看擴展系統(tǒng)存儲過程節(jié)點,我們發(fā)現(xiàn),他們的名字都以 sp 開始,這樣的命名表明它是一個存儲過程。
    該系統(tǒng)存儲過程顯然遵循的命名約定,在存儲過程制定一個一致的命名約定是好的,但是每個人的命名習(xí)慣都有不同。
    有些人前綴的存儲過程 usp,另外其他人使用 SQL 關(guān)鍵字,如 SELECT,INSERT,UPDATE,DELETE;也有人使用的縮寫是一些下劃線(例如,latest_tasks)。
    因此,我們的存儲過程可以被命名為以下任意一種,這取決于命名約定的使用。

    • LatestTasks
    • latest_tasks
    • uspLatestTasks
    • usp_latest_tasks
    • selectLatestTasks
    • select_LatestTasks
    • select_latest_tasks
    • getLatestTasks
    • get_latest_tasks

    不管選擇哪一種,都要保持一致性,這樣才會在需要使用存儲過程時顯得更加容易使用。
    所以這是存儲過程覆蓋。在下一節(jié)中,我們將會了解用戶登錄。

    下一節(jié):SQL Server 服務(wù)器角色

    SQL Server 教程

    相關(guān)文章