游標 儲存過程 觸發器

2022-11-27 01:03:05 字數 4273 閱讀 8228

本文介紹了游標、儲存過程、觸發器中利於sql-server高效處理資料的方法。

關鍵詞 sql-server、游標、儲存過程、觸發器、高效處理資料

sql-server是一種關係型資料庫管理系統,能夠與windows平台緊密整合,以一種簡單的方式來完成各種複雜的任務。sql-server管理大量資料,允許大量使用者進行併發訪問,維護資料的完整性和安全性。本文正是從游標、儲存過程、觸發器三個方面論述sql-server高效處理資料的方法。

1 sql-server資料庫簡介

sql-server是乙個功能完備而強大的資料庫管理系統。在sql-server中,資料和程式被劃分為不同的邏輯元件,稱為資料庫物件,通過訪問和管理資料庫物件來訪問和管理sql-server中的資訊。表是sql-server中的最重要的資料庫物件。

資料庫被儲存在乙個或者多個資料庫檔案中。關係資料庫系統是讓使用者用語句來獲得和修改與實體相關的資訊。所有的主流資料庫都支援用標準的sql語言來作業。

2 sql-server資料庫中的游標、儲存過程、觸發器

2.1 游標的作用、功能及其優點

sql-server中的「游標」是一種資料庫物件,應用程式用它來對結果集實行「行集」操作。

sql-server支援client游標、api server游標和t-sql游標。t-sql游標和其它種類的游標區別是:t-sql游標在儲存過程、批處理、函式、或觸發器中使用,用於重複對游標每一行的定製的處理。

其它種類的游標被設計用於從客戶應用程式中訪問資料庫資訊。本文以t-sql游標為例。

下面,宣告乙個forward_only游標,該游標允許對其資料進行修改。在查詢分析器中執行下列語句:

declare jobscursor cursor forward_only for

select * from jobs where min_lvl=75 for update

open jobscursor

fetch jobscursor

update jobs

set max_lvl=100 where current of jobscursor

select * from jobs where min_lvl=75

close jobscursor

deallocate jobscursor

游標的優點: 游標的這種行集設計方法是處理資料的乙個強有力的工具。

2.2 儲存過程的作用、功能及其優點

sql-server中的「儲存過程」是一組預編譯的sql語句。t-sql語句是充當sql-server資料庫和使用者應用程式間的程式設計介面。儲存和執行t-sql程式的方法有兩種,一種是本地儲存程式,另一種是將程式儲存為sql-server中的「儲存過程」,然後建立應用程式執行儲存過程。

通過編寫儲存過程來執行經常執行的管理任務,或者應用複雜的業務規則。sql-server中的儲存過程分為「系統儲存過程」和「使用者定義的儲存過程」。系統儲存過程用以管理sql-server和顯示有關資料庫和使用者的資訊,系統儲存過程充當從系統表中檢索資訊的快捷方式,如:

sp-stored-procedures列出當前環境中的所有儲存過程。

sql-server儲存過程具有以下幾點功能:

a. 通過輸入,輸出引數與呼叫程式通訊;

b. 返回乙個稱為返回**的整型值,以表明過程的執行狀態;

c. 具有方便的重新編譯其過程的方法,用execute與with recompile 子句;

下面,宣告乙個簡單的儲存過程。在查詢分析器中執行下列語句:

create procedure ss

@intvalue1 int,@intvalue2 int,@inttotal int output

as select @inttotal=@intvalue1+@intvalue2

go declare @inttotal int

exec ss 15,9, @inttotal output

print 『the total of 15 and 9 is』+convert(char(8), @inttotal)

執行結果為:the total of 15 and 9 is 25

儲存過程具有以下優點:

a. 允許模組化程式設計。

b. 只需建立過程一次並將其儲存在資料庫中,以後即可在程式中呼叫該過程任意次。儲存過程可獨立於程式源**而單獨修改。

c. 執行速度快。儲存過程將比t-sql批**的執行要快。儲存過程是被編譯後存放在資料庫伺服器的過程快取記憶體中,當使用時,伺服器不必再重新分析和編譯它們。

d. 減少網路流量。在網路中要傳送的數百行**,可由一條執行其過程**的一條單獨語句就可實現。

e. 有安全機制。可授予沒有直接執行儲存過程中語句的許可權的使用者,也可執行該儲存過程的許可權。另外可以防止使用者直接訪問表,強制使用者使用儲存過程執行特定的任務。

2.3 觸發器的作用、功能及其優點

sql-server中的「觸發器」是一種強制業務規則和資料完整性的一種型別機制,它是一種特殊型別的儲存過程。sql-server有兩種型別的觸發器:「after觸發器」和 「instead of觸發器」。

觸發器具有以下幾點功能:

a. 以「偵測」資料庫內的操作,確保輸入表中的資料的有效性;

b. 實現「層疊刪除」 ,如在表inventory和inventory property之間不存在外來鍵,但用乙個觸發器可以監視inventory表中記錄的刪除情況,及另乙個表與之有關聯的記錄;

c. 訪問「inserted表」和」deleted表中的內容。如對更新型別觸發器的表來講,將在「刪除表」中存放舊值,而在「插入表」中存放新值。

刪除表和插入表是每個觸發器都有的兩個特殊的虛擬表,這兩個表是邏輯表,並動態存貯在記憶體中;

下面,將建立乙個update觸發器,。每次執行此操作時,都執行該觸發器。以下是在查詢分析器中實現的t-sql塊:

create trigger checkproductupdate

on products for update as

if((select unitsonorder from inserted)<10)

or((select reorderlevel from inserted)<10)

begin

print 『錯誤,不能小於10!』

rollback transaction

end執行下面的語句:

update products set unitsonorder=5 where productid=5

執行結果為:錯誤,不能小於10!

保證了unitsonorder和reorderlevel列不會被修改為小於10的值。

d. 「insead of觸發器」提供了基於聯接條件的檢視所「不支援」的資料刪除操作。instead of觸發器可以基於乙個資料修改操作。

這是sql-server觸發器的另乙個重要功能之一;

下面建立乙個基於employee表和publisher表的檢視,要使對此檢視進行更新,必須通過instead of觸發器來刪除資料。

以下是在查詢分析器中的t-sql塊:

create view emp_pub as

select emp_id,lname,job_id,pub_name

from employee e,publishers p where

create trigger del_emp on emp_pub

inserted of delete as

delete employee where emp_id in (select emp_id from deleted)

執行下面的語句,刪除資料。

delete emp_pub where emp_id=』pok93028m』

e. 觸發器與儲存過程類似,亦可進行加密處理。以保證**的安全。

觸發器的優缺點:觸發器常用於強制業務規則和資料完整性的強大工具。據資料分析,提倡簡化使用觸發器,沒有必要使**太複雜而讓人費解。

也不要太多使用觸發器,因為觸發器的執行,高度和管理很複雜。

3 游標、儲存過程、觸發器三者的聯絡

sql-server資料庫中的游標、儲存過程、觸發器三者從不同方面提高了資料處理能力。參見下面的圖1.

觸發器是一種特殊型別的儲存過程,它主要是通過事件進行觸發而被執行的,而儲存過程是通過儲存過程的名字而被直接呼叫;游標可提供指令碼,儲存過程和觸發器中使用的訪問結果集中的資料的t-sql語句。

圖1 高效處理資料圖

4 結論

sql-server是乙個關聯式資料庫,用於各種企業組織及專業資料庫和應用開發環境中。能迅速地設計和開發客戶/伺服器。

游標的行集操作設計方法是乙個強有力的工具,要合理使用游標。游標主要用於實現一些不能使用面向集合的語句實現的操作。

儲存過程與觸發器

附頁 例8 1 建立乙個儲存過程,輸出所有學生的姓名,課程名稱和期末成績資訊。create procedure student score asselect sname,cname,final from student s,course c,score sc where and 例8 2 建立乙個儲...

儲存過程與觸發器

1 建立乙個加密過程 建立乙個名稱為p jiami的加密儲存過程,該過程用來查詢一門課程也沒有選修的學生的學號與姓名。最後,執行該儲存過程。create procedure p jiami1 with encryption asselect 學號,姓名 from 學生基本檔案 where 學號not...

訓練六 觸發器

一 訓練目的 1 熟悉基本rs觸發器 d觸發器 jk觸發器 門控制鎖存器的邏輯功能與特點。2 掌握各功能端的作用。3 學會使用雙蹤示波器波形和比較相位。二 儀器及材料 a tds 4數電實驗箱 雙蹤示波器 數字萬用表。b 參考元件 與非門74ls00 d觸發器74ls74 jk觸發器74ls112。...