SQL Server 7.0 入門(五)

黄舟
發布: 2016-12-24 17:39:14
原創
868 人瀏覽過

使用SQL Server開發應用程式
編寫預存程序與觸發器
       預存程序和觸發器是使用者建立的、駐留在伺服器的一組Transact SQL查詢語句。觸發器是系統在特定條件下執行的。預存程序能夠改善應用程式的效能。當客戶程式需要存取資料時,一般要經過5個步驟才能存取到資料:
1)  查詢語句被傳送到伺服器。
2)  伺服器編譯SQL程式碼。
3)  最佳化產生查詢的執行計畫。
4)  資料引擎執行查詢。
5)  結果發回顧客程式。
預存程序是在創建時編譯的,當預存程序第一次執行時,SQL Server產生查詢執行計劃並將其儲存進來,以利於將來使用。當透過預存程序發出一個請求時,上述的第2和第3步就沒有了,這能大大改善系統的效能。即使在第1步上也能提高效能。因為此時傳送到伺服器的語句只是一條預存程序的EXECUTE語句,而不是龐大的、複雜的查詢。這種特性能降低網路的流量。
除了效能方面的改善外,預存程序還提供了方便地集中維護應用程式的功能。如果將查詢嵌入到應用程式中。而又需要對查詢進行改變,則應用程式需要重新編譯,並重新發佈到所有的客戶端。而在預存程序中,修改對使用者而言是透明的,它只需要在伺服器上重新編譯預存程序。
預存程序還能提供安全機制,儘管使用者可能無權執行預存程序中的命令,但它卻可能有權執行預存程序本身。有時候,系統管理員不會給予使用者以資料修改(UPDATE、INSERT和DELETE)的權力。創建的預存程序卻能進行這些操作。當然用戶需要擁有執行該預存程序的權力。

建立預存程序
       預存程序可達到下列目的:
       · 帶參數。
       · 傳回狀態值。
       · 呼叫其它預存程序。
       · 在遠端伺服器上執行。
       預存程序在「sysobjects」系統表中有一個表項,其型別為「P」。預存程序的文字儲存在「syscomments」系統表中。建立預存程序需要使用Transact SQL指令CREATE PROCEDURE。
       例如:
       USE pubs
       GO
       
       CREATE PROCEDURE ap_GetAuthorsForPublisher
       AS
       SELECT a.au_lname,a.au_fname
       FROM authors a, titleauthor ta, titles t, publishers p
       WHERE a.au_id = ta.Au_id
       AND ta. Title_id = t.title_id
       AND t.pub_id = p.pub_id
       AND p.pub_name = 'New Moon Books?
       CREATE PROC[DURE] procedure_name [;number]
              [@ parameter_name ][OUTPUT] [,_n] ]
              [WITH {RECOMPILE | ENCRYPTION}]🎠   AS
       Number是用來將相同名字的流程分組的整數。分組是將所有的過程透過drop procedure語句組合到一個分組中。
       @parameter_name指定參數的名稱。
       RECOMPILE表示每次執行程序時請編譯。
       ENCRYPTION表示過程的文字在「syscomments」表中要加密。
       FOR REPLICATION表示程序不能在提交伺服器上執行。

將參數傳遞給預存程序
       預存程序能夠接受參數。
       注意:製程的參數也可以是使用者定義的資料型態。

給參數一個缺省值
       使用者也可為預存程序中的參數定義缺省值。當執行時沒有提供所需的參數時,系統就會使用預設值作為參數。如果既沒有定義預設值,又沒有在執行時提供參數,則SQL Server就會傳回錯誤。在預存程序中定義預設值,並使用一些邏輯檢測是否指定了參數從而採取相應的行動,這是一個很好的習慣。
       例如:
       USE pubs
       GO
           @PublisherName varchar(40) = 'New Moon Books'
       AS
       SEL publishers p
       WHERE a.au_id = ta.Au_id
       AND ta.Title_id = t.title_id
  PublisherName
       GO

 以上是SQL Server 7.0 入門(五)的內容,更多相關內容請關注PHP中文網(www.php.cn)!


相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板