儲存過程與觸發器面試

2022-04-14 09:49:36 字數 1413 閱讀 6577

**原文: 

1.儲存過程和函式

儲存過程重在處理資料,函式可以返回值。

(1)儲存過程是procedure使用者定義的一系列sql語句的集合,涉及特定表或其他物件的任務,使用者可以呼叫儲存過程。

(2)函式通常是資料庫已定義的方法,它接收引數並返回某種型別的值並且不涉及特定使用者表。

(3)可以理解函式是儲存過程的一種,都是預編譯的(塊語句每次執行都會編譯 儲存過程塊 一次編譯多次執行 效率更高)

plsql塊語句:

begin

end儲存過程塊

create procedure prg_add()

asbegin

end;

(4)函式可以沒有引數,但是一定要有乙個返回值,儲存過程可以沒有引數,不需要返回值。

(5)函式return返回值沒有返回引數模式,儲存過程通過out引數返回值,如果需要返回多個引數則建議使用儲存過程(函式oracle 在函式可以使用in和out mysql不能使用out)

(6)在sql資料操縱(dml)語句中只能呼叫函式而不能呼叫儲存過程

2.儲存過程的概念,優點(或特點),寫乙個簡單的儲存過程

儲存過程:是一組為了完成特定功能的sql語句集,利用sql server所提供的t-sql語言所編寫的程式,經編譯後儲存在資料庫中。

優點:(1)執行速度快,儲存過程只在建立時進行編譯,以後每次執行不需要再重新編譯,一般sql語句每執行一次就編譯一次

(2)儲存過程可重複使用

(3)安全性高(可設定只有某些使用者才具有對指定儲存過程的使用權)

(4)當對資料庫進行複雜操作時,可完成複雜的判斷和比較複雜的運算,可用儲存過程封裝起來

(5)易於維護和集中控制,當企業規則變化時在伺服器中改變儲存過程即可。無需修改 應用程式。

簡單的儲存過程:

create proc select_query @year int

asselect * from tmp where year=@year

3.觸發器

(1)觸發器:觸發器可以看成是乙個特殊的儲存過程,儲存過程是要顯示呼叫去完成,而觸發器可以自動完成。比如:當資料庫中的表發生增刪改操作時,對應的觸發器就可以執行對應的pl/sql語句塊

(2)作用:維護表的完整性,記錄表的修改來審計表的相關資訊

分為:dml觸發器:當資料庫伺服器中發生資料操作語言事件時執行的儲存過程,分為:after觸發器和instead of觸發器

ddl觸發器:特殊的觸發器,在響應資料定義語言(ddl)語句時觸發,一般用於資料庫中執行管理任務。ddl觸發器是響應create、after、或drop開頭的語句而啟用

觸發器用處還是很多的,比如校內網、開心網、facebook,你發乙個日誌,自動通知好友,其實就是在增加日誌時做乙個後觸發,再向通知表中寫入條目。因為觸發器效率高

---------------------

觸發器 儲存過程

1 為productsales資料庫中的產品表建立乙個名為update pno的update觸發器,該觸發器的作用是禁止更新產品表中的 productname 欄位的內容。並用update語句修改產品表中第一條記錄為 1 hp1500 印表機 2000 要求顯示 不能修改產品名稱 的警告資訊。cre...

儲存過程 觸發器

觸發器主要是通過事件進行觸發而被執行的,而儲存過程可以通過儲存過程名字而被直接呼叫。當對某一表進行諸如update insert delete 這些操作時,就會自動執行觸發器所定義的sql 語句,從而確保對資料的處理必須符合由這些sql 語句所定義的規則。觸發器的主要作用就是其能夠實現由主鍵和外來鍵...

儲存過程與觸發器作用

儲存過程與觸發器因為在資料庫中的作用不同,因為也就沒什麼效能可比性。儲存過程 stored procedure 是一組為了完成特定功能的sql語句集,經編譯後儲存在資料庫中。使用者通過指定儲存過程的名字並給出引數 如果該儲存過程帶有引數 來執行它。儲存過程是資料庫中的乙個重要物件,任何乙個設計良好的...