建站技術網專注分享網站建設技術,網站建設教程,真正幫你學會做網站技術,輕松解決網站建設過程中遇到的常見問題,為廣大站長服務。 網站地圖 | 收藏本站 | 訂閱
域名投資,就來找米網,認準網址:www.zhaomi.cc 專業仿站,就到仿站網:www.fangzhan.org
  站內公告: ·帝國cms教程內容已更新,歡迎關注     ·建站技術網采用阿里云服務器,備案已通    
您當前的位置:建站技術網 > 數據庫教程 > SQLserver教程

SQL Server存儲過程

時間:2018-02-02 12:38:01  來源:網絡收集  整理: 建站技術網 www.txwlqq.com     點擊:16次

在SQL Server中,存儲過程是比視圖更強大。視圖讓我們簡單地做一個SELECT查詢也在可視圖本身,它的工作方式是用于運行復雜的查詢。 但視圖并不姝真正為我們提供代碼業務邏輯的能力。例如,視圖不會能讓我們增加條件代碼(如IF語句)。幸運的是存儲過程可能使用。

什么是存儲過程?

存儲過程是一組SQL語句編譯成一個SQL。類似于在說的SQL腳本頁面,在這里可以運行許多SQL腳本合為一個整體。

然而,存儲過程并不僅僅是一個長腳本。這是已保存在SQL Server中明確在存儲過程節點的腳本。存儲過程通常包含一些業務邏輯。 例如,一個存儲過程可以接受被傳遞給它的并針對這些參數測試使用IF語句的參數。例如,如果該參數是一個值,這樣做,如果它是另一個值。

它們包含業務邏輯的能力使存儲過程SQL Server的強大的一部分。存儲過程可以提高性能的應用程序,因為存儲過程進行解析,并盡快,因為它是建立優化,然后存儲在內存中。運行通過存儲過程條件的查詢可以是非? - 相比,發送查詢通過網絡,到SQL Server的應用程序,遂將全部返還給它在網絡上,因此它可以過濾通過它,并挑選出只是它感興趣的記錄數據。

存儲過程的好處

下面是一些在使用存儲過程的主要優點:

好處說明
模塊化編程可以寫一個存儲過程一次,然后一次又一次地調用它,從應用程序的不同部分(甚至多個應用程序)。
性能存儲過程提供更快的代碼執行和減少網絡流量。
  • 更快的執行:存儲過程進行解析,并為他們創造盡快優化和存儲過程是存儲在內存中。這意味著它會執行比從應用程序到SQL Server發送SQL多行代碼快了很多。這樣做需要SQL Server來編譯和每次運行時優化改進你的SQL代碼。

  • 減少網絡流量:如果通過網絡發送的SQL多行代碼到你的SQL Server中,這會影響網絡性能。如果你有數以百計的SQL代碼行和/或你有很多活動在應用程序,這是尤其如此。運行SQL Server上的代碼(作為存儲過程中)消除了需要發送此代碼在網絡上。唯一的網絡通信將提供的參數和任何查詢的結果。

安全用戶無需執行任何直接的語句可以執行存儲過程。因此,存儲過程可以誰也不能正常訪問這些任務的用戶提供先進的數據庫功能,但這種功能是在嚴格控制的方式提供。

創建一個存儲過程

要創建一個存儲過程,需要使用CREATE PROCEDURE語句,其次是彌補了存儲過程的代碼。如果存儲過程將要接受參數,它們需要被包括在名稱后。

CREATE PROCEDURE myStoredProcedure AS...OR

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

示例

下面的代碼創建一個存儲過程被稱為“LatestTasks”。它接受一個參數名為 @Count. 當調用這個存儲過程,通過@count參數,它決定你想要多少行返回。下面的代碼:

CREATE PROCEDURE LatestTasks @Count int AS
SET ROWCOUNT @CountSELECT TaskName AS LatestTasks, DateCreatedFROM TasksORDER BY DateCreated DESC

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

Screenshot of stored procedure in the Object Explorer

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

執行存儲過程

現在,已經創建了存儲過程,要執行它的任何時間,需要使用調用它要么執行或EXEC。如果存儲過程的參數要求提供這些程序名在后面。像這樣:

EXECUTE LatestTasks EXEC LatestTasksEXEC LatestTasks @Count = 5

示例

在下面的例子中,我們在同一時間執行存儲過程兩次。我們第一次調用它,我們通過@Count傳遞為3,第二次傳遞的值為5。

該截圖顯示,通過傳遞參數(和值),存儲過程返回結果的基礎上提供值。頂端結果集返回3行,因為我們通過值3。第二個結果集返回5行,因為我們提供一個值5:

Screenshot of stored procedure being executed

使用GUI

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

具體方法如下:

  1. 使用對象資源管理器,瀏覽到存儲過程

  2. 右鍵單擊該存儲過程并選擇 Execute Stored Procedure...:
    Initiating the execution of a stored procedure

  3. 會出現一個對話框。輸入您所選擇的參數值:
    Initiating the execution of a stored procedure

  4. 點擊 OK

  5. SQL Server現在會生成SQL代碼并執行存儲過程。

修改存儲過程

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

ALTER PROCEDURE LatestTasks @Count int AS
SET ROWCOUNT @CountSELECT TaskName AS "Latest Tasks", Description, DateCreatedFROM TasksORDER BY DateCreated DESC

系統存儲過程

SQL Server包含了大量的系統存儲過程,以幫助數據庫管理任務?梢酝ㄟ^GUI執行的任務可以通過系統存儲過程來完成。 例如,有些東西可以用系統存儲過程的包括:

  • 配置安全帳戶

  • 建立鏈接服務器

  • 創建一個數據庫維護計劃

  • 創建全文檢索目錄

  • 添加遠程登錄

  • 配置復制

  • 設置調度作業

  • 以及更多...

命名約定

擴展系統存儲過程節點,一起來看看。會發現,他們的名字都開始以sp_,表明它是一個存儲過程。該系統存儲過程顯然遵循的命名約定。

這是一個好主意,制定一個一致的命名約定存儲過程(并為數據庫中的所有其他對象)。

有些人前綴的存儲過程usp_,另外其他人使用SQL關鍵字,如SELECT,INSERT,UPDATE,DELETE。其他人使用的縮寫應用。

一些使用下劃線的存儲過程(例如,latest_tasks)在單獨的單詞,而其他人將使用標題的情況下(例如,LatestTasks)。

因此,這是可能的,我們的存儲過程可以被命名為以下任意一種,這取決于命名約定的使用。

  • LatestTasks

  • latest_tasks

  • uspLatestTasks

  • usp_latest_tasks

  • selectLatestTasks

  • select_LatestTasks

  • select_latest_tasks

  • getLatestTasks

  • get_latest_tasks

最重要的是一致性。選擇一個,并堅持下去。它會更容易,當你需要使用存儲過程。 想象一下,有幾十,甚至上百的存儲程序,每一次執行一次,需要找到它在對象資源管理器,是否把它稱為usp_LatestTasks或uspLatestTasks。

所以這是存儲過程覆蓋。接下來,我們了解用戶登錄。


標簽:
文章標題:SQL Server存儲過程
文章網址:http://www.txwlqq.com/shujuku/SQLserver/3767.html
上一篇:SQL Server視圖
下一篇:SQL Server服務器角色
來頂一下
返回首頁
返回首頁
相關文章
    無相關信息
推薦資訊
如何通過SEO優化排名賺錢?SEO賺錢方法
如何通過SEO優化排名賺
seo優化教程:網站seo內容優化
seo優化教程:網站seo
SEO細節:企業SEO如何快速為新站做出效果
SEO細節:企業SEO如何
電商技術將如何發展?2018年有這五個大膽預測
電商技術將如何發展?
最新文章
欄目更新
欄目熱門
成人黄色