存儲過程

存儲過程是封裝了T-SQL代碼的服務器端例程。存儲過程能夠有輸入和輸出參數,能夠返回多個查詢的結果集,也容許調用具備反作用的代碼。經過存儲過程不但能夠對數據進行修改,也能夠對數據庫架構進行修改。數據庫

和使用特定的普通代碼相比,使用存儲過程能夠得到如下好處:安全

1.存儲過程能夠封裝邏輯處理。若是須要修改存儲過程的實現,則只要在數據庫的一個地方進行修改,存儲過程的全部用戶就可以使用修改過的版本。服務器

2.經過存儲過程能夠更好地控制安全性。能夠授予用戶執行某個存儲過程的權限,而不是授予用戶直接執行底層操做的權限。架構

3. 在存儲過程當中能夠整合全部的錯誤處理,當有錯誤發生時,默默地進行糾正錯誤的操做。性能

4. 存儲過程能夠提升執行性能。服務器端

CREATE PROC dbo.usp_GetCustomerOrdersdate

  @custid AS INT,權限

  @fromdate AS DATETIME='19000101',數據

  @todate AS DATETIME='99991231',查詢

  @numrows AS INT OUTPUT

AS

SET NOCOUNT ON;

SELECT orderid,custid,empid,orderdate

FROM dbo.Orders

WHERE

    custid=@custid

  AND orderdate>=@fromdate

  AND orderdate<@todate;

SET @numrows=@@rowcount;

GO

命令 SET NOCOUNT ON 用於禁止顯示DML語句(如存儲過程當中的SELECT 語句)影響了多少行的消息。