標籤:
WHEN子句說明觸發約束條件。Condition為一個邏輯表達時,其中必須包含相關名稱,而不能包含查詢語句,也不能調用PL/SQL函數。WHEN子句指定的觸發約束條件只能用在BEFORE和AFTER行觸發器中,不能用在INSTEAD OF行觸發器和其它類型的觸發器中。
-- 建立記錄操作事件的表
CREATE TABLE event_table(
event VARCHAR2(50),
time DATE
);
-- 建立觸發器
CREATE OR REPLACE TRIGGER tr_startup
AFTER STARTUP
ON DATABASE
BEGIN
INSERT INTO event_table(event, time)
VALUES(ora_sysevent, SYSDATE);
END;
- 不能對rownum使用>(大於1的數值)、>=(大於1的數值)、=(大於1的數值),否則無結果。
2.在使用rownum時,只有當Order By的欄位是主鍵時,查詢結果才會先排序再計算rownum,但是,對非主鍵欄位(如:name)進行排序時,結果可能
就混亂了。出現混亂的原因是:oracle先按實體儲存體位置(rowid)順序取出滿足rownum條件的記錄,即物理位置上的前5條資料,然後在對這些資料按照Order By的欄位進行排序,而不是我們所期望的先排序、再取特定記錄數。
通常有三種執行不同類型的動態SQL方法:
- 使用EXECUTE IMMEDIATE語句。
除不能處理多行查詢語句,其他的動態SQL包括DDL語句,DCL語句以及單行的SELECT查詢都可以。
- REF CURSOR動態資料指標,使用OPEN-FOR,FETCH,CLOSE。
能處理動態多行查詢操作,必須要使用OPEN-FOR語句開啟遊標,使用FETCH語句迴圈提取資料,最終使用CLOSE語句關閉遊標。
- 使用批量BULK COLLECT執行動態SQL。
通過使用批量動態SQL語句,可以加快SQL語句處理,進而提高PL/SQL的效能。
1. 視圖簡介
視圖是基於一個表或多個表或視圖的邏輯表,本身不包含資料,通過它可以對錶裡面的資料進行查詢和修改。
2. 建立視圖
3. 視圖的優點
4. 索引
為了提高查詢的速度,當使用者對查詢速度不滿意而需要對資料庫的效能進行調校時,優先考慮建立索引。
ORACLE資料庫之PL/SQL觸發器、rownum、動態SQL、資料庫之視圖與索引