ORACLE資料庫之PL/SQL觸發器、rownum、動態SQL、資料庫之視圖與索引

來源:互聯網
上載者:User

標籤:

    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;

 

 

  1. 不能對rownum使用>(大於1的數值)、>=(大於1的數值)、=(大於1的數值),否則無結果。 

     2.在使用rownum時,只有當Order By的欄位是主鍵時,查詢結果才會先排序再計算rownum,但是,對非主鍵欄位(如:name)進行排序時,結果可能

就混亂了。出現混亂的原因是:oracle先按實體儲存體位置(rowid)順序取出滿足rownum條件的記錄,即物理位置上的前5條資料,然後在對這些資料按照Order By的欄位進行排序,而不是我們所期望的先排序、再取特定記錄數。

 

 

通常有三種執行不同類型的動態SQL方法:

    1. 使用EXECUTE IMMEDIATE語句。 
      除不能處理多行查詢語句,其他的動態SQL包括DDL語句,DCL語句以及單行的SELECT查詢都可以。
    2. REF CURSOR動態資料指標,使用OPEN-FOR,FETCH,CLOSE。 
      能處理動態多行查詢操作,必須要使用OPEN-FOR語句開啟遊標,使用FETCH語句迴圈提取資料,最終使用CLOSE語句關閉遊標。
    3. 使用批量BULK COLLECT執行動態SQL。 
      通過使用批量動態SQL語句,可以加快SQL語句處理,進而提高PL/SQL的效能。

 

 

1. 視圖簡介

視圖是基於一個表或多個表或視圖的邏輯表,本身不包含資料,通過它可以對錶裡面的資料進行查詢和修改。

2. 建立視圖

3. 視圖的優點

4. 索引

為了提高查詢的速度,當使用者對查詢速度不滿意而需要對資料庫的效能進行調校時,優先考慮建立索引。

 

ORACLE資料庫之PL/SQL觸發器、rownum、動態SQL、資料庫之視圖與索引

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.